R语言For循环实现间隔跳行赋值失败,如何调整代码得到预期结果
代码问题说明
你在循环内部修改迭代变量i的操作不会生效:R的for循环每次迭代时,会自动从你指定的遍历序列1:10中按顺序取下一个值赋值给i,你在循环体中写的i = i + 2只会在当前轮次的循环体内生效,不会影响下一轮的i取值,所以最终所有行的V1列都被赋值为1。
调整方案
方案1:修改for循环的遍历序列
直接指定遍历所有奇数行即可,无需在循环内修改i的值:
test = as.data.frame(cbind(rep(NA,10), rep(NA,10))) for (i in seq(1, 10, 2)){ test[i,1] = 1 }
方案2:使用R向量化操作(更高效,无需循环)
R支持直接按索引批量赋值,比for循环性能更好,尤其适合数据量较大的场景:
test = as.data.frame(cbind(rep(NA,10), rep(NA,10))) test[seq(1, nrow(test), 2), 1] <- 1
两种方案都可以得到你期望的输出结果。
内容的提问来源于stack exchange,提问作者Shehroz Malik
相关产品推荐
相关产品推荐

