在 R 中子集数据时如何处理“未定义列被选中”错误?


当我们使用单个方括号进行子集选择时,需要注意在适当的位置放置逗号。如果我们想使用列来子集行,则需要在条件之前放置逗号。“未定义列被选中”错误发生在我们没有指定任何逗号的情况下。查看示例以了解其工作原理。

考虑以下数据框:

示例

 在线演示

x1<-rpois(20,5)
x2<-rpois(20,2)
df1<-data.frame(x1,x2)
df1

输出

   x1 x2
1  7  0
2  6  4
3  5  3
4  6  1
5  3  0
6  4  1
7  6  1
8  5  1
9  7  3
10 4  2
11 6  3
12 9  2
13 5  2
14 0  0
15 7  4
16 7  3
17 6  2
18 6  3
19 4  3
20 3  3

df1[which(x1>5)]

Error in `[.data.frame`(df1, which(x1 > 5)) : undefined columns selected

此处发生错误是因为方括号内没有为行使用逗号。

基于 x1 值大于 5 来子集 df1:

示例

df1[which(x1>5),]

输出

   x1 x2
1  7  0
2  6  4
4  6  1
7  6  1
9  7  3
11 6  3
12 9  2
15 7  4
16 7  3
17 6  2
18 6  3

示例

 在线演示

y1<-rnorm(20)
y2<-rnorm(20)
y3<-rnorm(20)
y4<-rnorm(20)
df2<-data.frame(y1,y2,y3,y4)
df2

输出

       y1           y2            y3             y4
1  -1.409601559   -0.40597308   -0.64615777   -1.22078887
2   0.266717714   -0.57865012    0.76654025   -1.76430465
3  -0.064943594   -1.82008803   -1.10213671   -1.40020872
4   0.809783619   -0.08933758   -0.20752297   -1.11327480
5  -0.034361207   -1.45135447   -1.16066436    0.01539031
6  -0.082024227   -1.96856577   -0.09511484    0.77846417
7   0.259362498   -0.09326561   -0.40534748    0.39772236
8   1.116127337    0.80943746   -1.01315198   -0.60320454
9   0.236156881    0.48847386   -0.72174393   -0.29582895
10  1.762595310   -0.54977615   -0.90530123    0.65145594
11 -0.321092438    0.63080804   -0.76475103   -0.30353104
12  0.020150610    1.59757420   -0.75559972   -1.96075329
13  0.164084351   -0.11924416   -0.72052393    0.14890162
14  0.658193888   -1.32640467   -0.06000406   -0.89518512
15  1.230021633   -0.73053679    2.28237747    0.24679498
16 -0.530892825   -0.69954922   -0.98488545    0.37360026
17  0.563701048    0.67395747   -0.38809559    3.50620870
18  0.001154061   -0.19090813    0.49855009    0.56542930
19  1.821508804   -0.42088642    0.75174472   -0.93212634
20 -0.118279565    1.16474884   -0.60869426    0.95720193

基于 y2 值小于 0.5 来子集 df2:

示例

df2[which(y2<0.5),]

输出

         y1           y2            y3           y4
1  -1.409601559   -0.40597308   -0.64615777   -1.22078887
2   0.266717714   -0.57865012    0.76654025   -1.76430465
3  -0.064943594   -1.82008803   -1.10213671   -1.40020872
4   0.809783619   -0.08933758   -0.20752297   -1.11327480
5  -0.034361207   -1.45135447   -1.16066436    0.01539031
6  -0.082024227   -1.96856577   -0.09511484    0.77846417
7   0.259362498   -0.09326561   -0.40534748    0.39772236
9   0.236156881    0.48847386   -0.72174393   -0.29582895
10  1.762595310   -0.54977615   -0.90530123    0.65145594
13  0.164084351   -0.11924416   -0.72052393    0.14890162
14  0.658193888   -1.32640467   -0.06000406   -0.89518512
15  1.230021633   -0.73053679    2.28237747    0.24679498
16 -0.530892825   -0.69954922   -0.98488545    0.37360026
18  0.001154061   -0.19090813    0.49855009    0.56542930
19  1.821508804   -0.42088642    0.75174472   -0.93212634

更新于:2021年2月11日

2K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告