子集数据框时选择了未定义的列
Posted
技术标签:
【中文标题】子集数据框时选择了未定义的列【英文标题】:Undefined columns selected when subsetting data frame 【发布时间】:2013-10-12 21:40:18 【问题描述】:我有一个数据框,str(data)
来显示更多关于我的数据框的信息,结果如下:
> str(data)
'data.frame': 153 obs. of 6 variables:
$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...
$ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...
$ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
$ Temp : int 67 72 74 62 56 66 65 59 61 69 ...
$ Month : int 5 5 5 5 5 5 5 5 5 5 ...
$ Day : int 1 2 3 4 5 6 7 8 9 10 ...
但是,例如,当我想将 Ozone
的数量设置为 14 以上时,我使用以下代码,这给了我一个错误:
> data[data$Ozone > 14 ]
[.data.frame
(data, data$Ozone > 14) 中的错误:选择了未定义的列
【问题讨论】:
你少了一个逗号。该错误告诉您,您没有指明要在子集中包含哪些列。 换句话说,记住数据框引用需要行和列标识符。您可以只选择一列或所有列,但您需要指明您想要什么。 我正在做同样的任务,所以我知道这是家庭作业。弱酱。 【参考方案1】:您想要条件为真的行,因此您需要一个逗号:
data[data$Ozone > 14, ]
【讨论】:
为什么...这种语法对我来说毫无意义 @Reinderien 这是索引数组的常用方法。查看老式的 R 文档,它实际上非常擅长教授数据结构。 我得到了除了逗号之外的所有内容。dat[ 1, 2 ]
为您提供第一行第二列中的条目。 dat[ 1, ]
为您提供第一行中的每个条目。 dat[ 1:5, ]
为您提供第 1-5 行的每一列。
它是 153 x 6,是二维的。以上是关于子集数据框时选择了未定义的列的主要内容,如果未能解决你的问题,请参考以下文章
foreach 拆分 data.tables 的迭代器问题: 中的错误:选择了未定义的列