Неожиданное присвоение значения внутри функции - PullRequest
0 голосов
/ 11 апреля 2019

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

...