在unique中出现R错误。默认(x)unique()仅适用于向量

在unique中出现R错误。默认(x)unique()仅适用于向量,r,R,我从内置矩阵state.x77中创建了一个名为state的数据集,其中包含两个连续变量(人口和收入)和两个因子变量(地区和面积) 我使用taply()、by()、aggregate()、和ave()计算了各地区的平均收入,以查看返回对象的格式 但是对ave()的调用给出了错误 unique中出错。默认值(x):unique()仅适用于向量 代码是: ## Mean income by region tapply(state$inc, state$region, mean) # Northeast

我从内置矩阵
state.x77
中创建了一个名为
state
的数据集,其中包含两个连续变量(人口和收入)和两个因子变量(地区和面积)

我使用
taply()
by()
aggregate()
、和
ave()
计算了各地区的平均收入,以查看返回对象的格式

但是对
ave()
的调用给出了错误

unique中出错。默认值(x):unique()仅适用于向量

代码是:

## Mean income by region
tapply(state$inc, state$region, mean)
# Northeast         South North Central          West 
# 4570.222       4011.938      4611.083      4702.615 

by(state$inc, state$region, mean)
# state$region: Northeast
#
# [1] 4570.222
# [...]

aggregate(state$inc, list(state$region), mean)
#
#         Group.1        x
# 1     Northeast 4570.222
# 2         South 4011.938
# 3 North Central 4611.083
# 4          West 4702.615

ave(state$inc, state$region, mean)
# Error in unique.default(x) : unique() applies only to vectors

为什么会发生错误?如何防止它?

这是一个非常常见的错误,您需要使用命名参数
FUN

ave(state$inc, state$region, FUN = mean)

否则,
mean
将被解释为另一个分组变量(属于
..
参数至
ave

非常感谢。这个错误已经避免了。但我也没有在tapply()、by()、aggregate()命令中使用FUN。那么为什么这些没有发生错误呢?这是因为在
ave
的概要(参数列表)中,
FUN
..
之后,所以如果您没有使用
FUN=
专门传递它,那么R将认为它是
..
参数的一部分,并使用默认(
mean
)作为
FUN
参数。