子集数据框时选择了未定义的列

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 的迭代器问题: 中的错误:选择了未定义的列

R:`[.data.frame`(frame, predictors) 中的决策树错误:选择了未定义的列

数据表:标题中带有点 (.) 的列未正确显示

R中的列未被识别为变量[重复]

移动设备上的列未居中对齐