R语言循环内使用append()无法给列表中的向量追加元素
R循环追加向量值不生效问题修复
核心错误原因
你预先将列表长度赋值给了变量len,但for循环的遍历范围写为1:length,此处的length是R的内置函数名,不是你定义的存储长度的变量,导致循环逻辑未按预期运行。
修正后代码
factors <- list(c("K3BG","9"),c("RTCKO","4")) len <- length(factors) # 仅需将循环范围的length改为你定义的len变量即可 for (i in 1:len) { rejig_score <- factors[[i]][2] rejig_score <- as.numeric(rejig_score) if(rejig_score > 5) { factors[[i]] <- append(factors[[i]],"Approved") } else { factors[[i]] <- append(factors[[i]],"Disapproved") } }
优化建议
更稳妥的列表遍历方式是直接使用seq_along()函数,不需要手动计算长度,能避免变量名写错、空列表遍历异常等问题,写法如下:
for (i in seq_along(factors))
运行结果验证
执行修正后代码打印factors,输出符合预期:
[[1]] [1] "K3BG" "9" "Approved" [[2]] [1] "RTCKO" "4" "Disapproved"
内容的提问来源于stack exchange,提问作者Phant5x
相关产品推荐
相关产品推荐

