Кадр данных обновления через функцию не работает

Я столкнулся с небольшой проблемой с помощью R …

В следующем кадре данных

test <- data.frame(v1=c(rep(1,3),rep(2,3)),v2=0) 

Я хочу изменить значения для v2 в строках, где v1 равняется 1.

test[test$v1==1,"v2"] <- 10

работает просто великолепно.

test
  v1 v2
1  1 10
2  1 10
3  1 10
4  2  0
5  2  0
6  2  0

Однако я должен сделать это в функции.

test <- data.frame(v1=c(rep(1,3),rep(2,3)),v2=0)

test.fun <- function (x) {
    test[test$v1==x,"v2"] <- 10
    print(test)
}

Вызывание функции, кажется, работает.

test.fun(1)
  v1 v2
1  1 10
2  1 10
3  1 10
4  2  0
5  2  0
6  2  0

Однако, когда я теперь смотрю на тест:

test
  v1 v2
1  1  0
2  1  0
3  1  0
4  2  0
5  2  0
6  2  0

это не работало. Существует ли команда, которая говорит R действительно обновлять кадр данных в функции? Большое спасибо за любую справку!

28
задан donodarazao 19 October 2010 в 15:12
поделиться