在R中:对于给定的数据帧
df <- data.frame('a'= c(1,3,5,7,9), 'b' = c(2,4,6,8,10), 'c' = c(1,2,3,4,5), 'update' = c(NA, NA, NA, NA, NA))
我尝试使用如下所示的for循环将值分配给列。
示例1
testFunction <- function(){
for (i in 1:nrow(df)){
update_val <- df[i,]$a+df[i,]$b
df[c(which(df$c==i)),]$update <- update_val
}
}
testFunction()
df$update
然后我打印结果,期望看到df$update
已更新为适当的值,即c(3, 7, 11, 15, 19)
。但是上面仍然返回c(NA,NA,NA,NA,NA).
下面的示例2和3返回所需的输出。
示例2
df$update <- df$a + df$b
df$update
示例3
testFunction <- function(){
update_val <- NULL
for (i in 1:nrow(df)){
temp <- df[i,]$a+df[i,]$b
update_val <- append(update_val, temp)
}
return(update_val)
}
update_val <- testFunction()
df$update <- update_val
df$update
我只想了解为什么示例1不能按预期更新列/向量?