Другой результат в случае `factor` или` as.factor`? - PullRequest
1 голос
/ 03 апреля 2019

Моя система R 3.5.3 с Rstudio 1.1.463

Установите фрейм данных, как показано ниже:

df <- data.frame(
    cola = c('a','b','c','d','e','e','1',NA,'c','d'),
    colb = c("A",NA,"C","D",'a','b','c','d','c','d'),stringsAsFactors = FALSE)
cats<-c('a','b','c','d','e','f','1')

Затем выполните df['cola'] <- lapply(df['cola'], function(x) factor(x,levels=cats,exclude = NULL,ordered = FALSE,nmax=6)), получите ожидаемый результат.

Если изменить factor на as.factor на основе на этом посту , выполнить df['cola'] <- lapply(df['cola'], function(x) as.factor(x,levels=cats,exclude = NULL,ordered = FALSE,nmax=6)), получит ошибку, как показано ниже:

Error in as.factor(x, levels = cats, exclude = NULL, ordered = FALSE,  : 
  unused arguments (levels = cats, exclude = NULL, ordered = FALSE, nmax = 6)

В чем проблема?

1 Ответ

3 голосов
/ 03 апреля 2019

Проблема указана в сообщении об ошибке.Вы передаете аргументы, которых нет для as.factor.Если вы прочитаете ?as.factor, вы увидите, что параметр as.factor равен x.levels, exclude, ordered, nmax являются аргументами для factor, а не as.factor.Следовательно, это дает вам ошибку, что вы передаете аргументы, которые вы не используете.

Если вы удалите эти аргументы и запустите функцию, она будет работать без каких-либо сообщений об ошибках.

lapply(df['cola'], function(x) as.factor(x))
#$cola
# [1] a    b    c    d    e    e    1    <NA> c    d   
#Levels: 1 a b c d e

ИЛИ просто

lapply(df['cola'], as.factor)

и если у вас будет только один столбецнет необходимости в lapply

as.factor(df$cola)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...