基于字符向量的子集数据

时间:2018-10-16 06:20:21

标签: r

我的字符向量包含数值。我想根据向量对数据进行子集化。

x = '1,2,3,4,5'
n = noquote(gsub(","," ",x))
mtcars[n,]

它不起作用。

但是以下代码有效。

d = data.frame(n = 1:5)
mtcars[d$n,]

1 个答案:

答案 0 :(得分:0)

x是一个字符串,不是将其用作行索引的数字向量。我们可以将字符串拆分为“,”,将数字转换为数字,然后对数据框进行子集化。

mtcars[as.numeric(strsplit(x, ",")[[1]]), ]

#                   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

出于比较目的,请查看以下输出以了解为什么第二次尝试有效。

class(d$n)
#[1] "integer"
length(d$n)
#[1] 5

class(x)
#[1] "character"
length(x)
#[1] 1