В 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 не обновляет столбец / вектор, как ожидалось?