内部意外的值分配

时间:2019-04-11 14:51:21

标签: r loops dataframe vector variable-assignment

在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不能按预期更新列/向量?

0 个答案:

没有答案