我的系统是带有Rstudio 1.1.463的R 3.5.3
按如下所示设置数据框:
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))
,得到预期的结果。
如果基于on this post将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)
出什么问题了?
答案 0 :(得分:3)
问题如错误消息中所述。您正在传递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)