示例数据:
的sampleData
Ozone Solar.R Wind Temp Month Day sampleData.Ozone
1 41 190 7.4 67 5 1 41
2 36 118 8.0 72 5 2 36
3 12 149 12.6 74 5 3 12
.........
想要提取条件为$ozone > 31
以下是代码:
data <- sampleData[sampleData$ozone > 31]
并得到以下错误:
if中的错误(继承(X [[j]],“data.frame”)&amp;&amp; ncol(xj)&gt; 1L)X [[j]]&lt; - as.matrix(X [[ j]]): 缺少需要TRUE / FALSE的值
我该如何纠正?谢谢!
答案 0 :(得分:1)
R区分大小写,因此您的ozone
必须与data.frame
中的名称相匹配。另外,对于data.frame
的子集,您需要用逗号分隔的两个索引(行和列)。如果逗号后面没有任何内容,则表示您正在选择所有列:
sampleData[sampleData$Ozone > 31,]
将data.frame
:
subset(sampleData, Ozone > 31)
或dplyr
:
library(dplyr)
sampleData %>%
filter(Ozone > 31)
<强>结果:强>
Ozone Solar.R Wind Temp Month Day sampleData.Ozone
1 41 190 7.4 67 5 1 41
2 36 118 8.0 72 5 2 36
数据:强>
sampleData = structure(list(Ozone = c(41L, 36L, 12L), Solar.R = c(190L, 118L,
149L), Wind = c(7.4, 8, 12.6), Temp = c(67L, 72L, 74L), Month = c(5L,
5L, 5L), Day = 1:3, sampleData.Ozone = c(41L, 36L, 12L)), .Names = c("Ozone",
"Solar.R", "Wind", "Temp", "Month", "Day", "sampleData.Ozone"
), class = "data.frame", row.names = c("1", "2", "3"))