在R中使用xtabs()函数出现‘invalid 'type' (character) of argument’错误求助
解决
xtabs()报错:Error in FUN(X[[i]], ...) : invalid 'type' (character) of argument 快速解决方案
你的xtabs公式写法不符合函数规则,修正后即可正常运行:
set.seed(0) df <- data.frame( gender = sample(c("female", "male"), 100, replace = TRUE), foo = sample(c(TRUE, FALSE), 100, replace = TRUE), bar = sample(c(0, 1, 2, 3, 4), 100, replace = TRUE) ) # 正确写法:用~连接分类变量,生成交叉频数表 xtabs(~ gender + foo, data=df)
错误原因解析
xtabs()的作用是生成交叉频数表,它的公式有明确规则:
- 若仅统计分类变量的交叉频数,公式格式为
~ 变量1 + 变量2 + ...,左侧不需要放任何变量; - 只有当你有现成的数值型频数变量时,才把频数变量放在左侧,比如
频数变量 ~ 分类变量1 + 分类变量2。
你的代码把字符型的gender放在了公式左侧,xtabs会默认把它当作频数变量处理,但字符型无法参与求和、计数这类数值运算,内部处理函数(FUN)接收到不符合要求的字符型参数后,就抛出了这个类型错误。
内容的提问来源于stack exchange,提问作者buhtz
相关产品推荐
相关产品推荐

