глобальная переменная в функции R - PullRequest
5 голосов
/ 04 сентября 2010

Я создал функцию для обработки некоторых моих данных, например:

a <- "old" 
test <- function (x) {
   assign(x, "new", envir = .GlobalEnv)
} 
test(a)

Но я не вижу перехода от "старого" к "новому", я полагаю, это часть "глобальной переменной", какое-либо предположение?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 04 сентября 2010

для assign(x,value), x должно быть именем переменной, а не ее значением, поэтому x должно быть в символьной форме: assign("a","new"), и для использования в вашей функции попробуйте:

test <- function (x) 
{
  assign(deparse(substitute(x)), "new", envir = .GlobalEnv)
} 

в вашем случае вы создадите переменную с именем "old" и назначите ей "new":

> old
[1] "new"
2 голосов
/ 04 сентября 2010

вы можете объединить вашу функцию с функцией sapply, например:

require (plyr)
b <- sapply (a, test)
b
  old 
"new" 

, чтобы вы применяли свою функцию к фактическим элементам вашего a вектора - как указал romunov в своемответ.

другой, например:

a <- c("old", "oold", "ooold", "oooold")
b <- sapply (a, test)
b
   old   oold  ooold oooold 
 "new"  "new"  "new"  "new" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...