我正在尝试从data.frame中删除列。 以下表达式
a1$"STR_COL_4_" <- NULL
但是
xx <- "STR_COL_4_"
a1$xx <- NULL
不起作用......问题是什么???
答案 0 :(得分:1)
正如Richard Scriven,user20650和agenis所指出的那样,当你使用$
来引用数据框中的列时,它只会在数据框中查找该列。在第二个示例中,R查找名为xx
的列并失败,即使已存在名为 xx
的变量。使用[[ ]]
让R评估表达式。
作为使用内置汽车数据集的示例:
> data(mtcars)
> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
> var <- "wt"
> mtcars$var
NULL
> mtcars[[var]]
[1] 2.620 2.875 2.320 3.215 3.440 3.460 3.570 3.190 3.150 3.440 3.440 4.070
[13] 3.730 3.780 5.250 5.424 5.345 2.200 1.615 1.835 2.465 3.520 3.435 3.840
[25] 3.845 1.935 2.140 1.513 3.170 2.770 3.570 2.780