изменить аргумент объекта в R - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу изменить объект data.frame внутри функции.Следующее не делает то, что я хотел:

# function to change factors to characters using dplyr
# x: a data.frame
fa_clean <- function(x,...) {
  require(dplyr)
  x <- x %>% mutate_if(is.factor, as.character) 
  print(x)
  return(x) 
 }

# example set 
test <- data.frame(number=c(1:10),letter=as.factor(letters[1:10]))

fa_clean(test) # applying the function 
str(test) # letter is still a factor ??? 

Я явно что-то упустил.Изменить: И я в курсе:

test <- fa_clean(test)

Но я хотел бы запустить его без этого назначения.

1 Ответ

0 голосов
/ 23 ноября 2018

Вот ваш код с необходимой модификацией, чтобы он заработал:

fa_clean <- function(x) {
  varname <- deparse(substitute(x))
  require(dplyr)
  x <- x %>% mutate_if(is.factor, as.character) 
  assign(varname, x, envir = .GlobalEnv)
}

# example set 
test <- data.frame(number=c(1:10),letter=as.factor(letters[1:10]))
fa_clean(test)
str(test) # letter is no longer a factor
'data.frame':   10 obs. of  2 variables:
 $ number: int  1 2 3 4 5 6 7 8 9 10
 $ letter: chr  "a" "b" "c" "d" ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...