【问题标题】:R error in unique.default(x) unique() applies only to vectorsunique.default(x) unique() 中的 R 错误仅适用于向量
【发布时间】:2013-05-22 00:47:20
【问题描述】:

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

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

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

unique.default(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

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

【问题讨论】:

    标签: r


    【解决方案1】:

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

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

    否则mean 将被解释为另一个分组变量(... 参数的一部分到ave。)

    【讨论】:

    • 非常感谢。该错误已被防止。但我也没有在 tapply(), by(), aggregate() 命令中使用 FUN。那为什么那些没有发生错误呢?
    • 这是因为在ave的概要(参数列表)中,FUN之后 ...所以如果你不通过它专门用FUN= ,那么 R 会认为它是 ... 参数的一部分,并为 FUN 使用默认值 (mean)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 2020-07-20
    相关资源
    最近更新 更多