You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中迭代将向量作为行添加至矩阵的for循环实现

批量将函数输出写入矩阵的实现过程

我编写了AutoCorr()函数,输入ID后会返回包含目标统计量的长度为16的向量,需要将每个ID对应的向量作为行,写入一个43×16的矩阵output_cisb中。

AutoCorr()函数输出示例

> AutoCorr("1182")
 [1] "1182"                 "4.04251700680272"     "0.245592563077202"    "4.01360544217687"    
 [5] "0.394458659738509"    "1.92857142857143"     "0.258863495453396"    "0.00549450549450549" 
 [9] "0.0402062637741741"   "-0.0299525504151839"  "-0.0760215053763439"  "-0.00118963486454654"
[13] "-0.0160279139947191"  "0.46824093004317"     "0.300800729491312"    "-0.429796668526319"  

低效的手动赋值方式

手动逐个给矩阵行赋值效率极低,以下是前5行的示例:

output_cisb[1,] <- AutoCorr("1001")
output_cisb[2,] <- AutoCorr("1002")
output_cisb[3,] <- AutoCorr("1041")
output_cisb[4,] <- AutoCorr("1042")
output_cisb[5,] <- AutoCorr("1052")

最初错误的嵌套for循环

尝试用嵌套循环实现,但无法正常运行:

ID_cisb<-file_path_sans_ext(basename(filenames_cisb)) # 生成待传入AutoCorr()的ID向量

for (i in nrow(output_cisb)){
  for (j in ID_cisb){
  output_cisb[i,] <- AutoCorr(j)
}
}

错误原因:外层循环for (i in nrow(output_cisb))仅会执行一次(nrow()返回单个数值),内层循环会把所有ID的结果依次覆盖到同一行,最终矩阵只有最后一个ID的结果,其余行未被正确赋值。

正确的for循环实现

通过遍历ID的索引,实现每个ID的结果对应写入矩阵的行:

ID_cisb<-file_path_sans_ext(basename(filenames_cisb))  

for (i in seq_along(ID_cisb)){  # 遍历索引
  # print (i)
  output_cisb[i,] <- AutoCorr(ID_cisb[i])
}

内容的提问来源于stack exchange,提问作者Ran Yan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:36:13