【发布时间】:2016-02-22 11:30:06
【问题描述】:
花 3 小时试图了解我的文件发生了什么
错误的方式:子集上的子集
DataA=subset(Data,Data$var1=="1")
DataA$newvar=Results$cluster
DataB=subset(DataA,Data$newvar=="7")
好方法:每个对象一个子集
DataA_var1=subset(Data,Data$var1=="1")
DataA_var1$newvar=Results$cluster
DataB=subset(DataA_var1,Data$newvar=="7")
我在$ operator is invalid for atomic vectors 上阅读了很多内容
在我的情况下,这个错误也与“不正确的维度数”有关(我尝试了技巧as.data.frame())
我重新安装了上一个 RStudio 版本。
我的意思是:如果您有 $ operator is invalid for atomic vectors 错误,这不是 typeof() 问题的必要条件......
试试看你是否在同一个对象上使用了两次subset()。
【问题讨论】:
-
在
subset中,您不需要Data$。当您在matrix对象上使用它时,您将收到$ operator ...消息。请查看str(Data) -
我真的不明白你的问题是什么。这两个块(好的和坏的)在我看来是一样的,除了一个对象的名称。正如@akrun 提到的,您对
subset的使用是有缺陷的。你想达到什么目的?请分享一些数据和预期的输出,以便您获得一些有用的帮助。 -
请提供一个最小的、完整的和可重现的示例,任何其他人都可以简单地复制并粘贴到他们的 R 会话中运行。需要包括所有库语句和输入。如果数据很大并且您的输入是
x,则将您的数据减少到说明问题所需的最小值,然后通过在您的问题中显示dput(x)的输出来显示它。有关一般建议,请参阅minimal reproducible example,有关如何在 SO 上提出问题的更多面向 R 的建议,请参阅 How to Make a Great R Reproducible Example。 -
@akrun 是的,你是对的,一般来说,当尝试在矩阵上使用 $ 时会收到此消息......但我所说的所有对象都是 'data.frame'跨度>