【发布时间】:2018-10-16 14:34:17
【问题描述】:
我有包含数值的字符向量。我想根据向量对数据进行子集化。
x = '1,2,3,4,5'
n = noquote(gsub(","," ",x))
mtcars[n,]
它不工作。
但下面的代码有效。
d = data.frame(n = 1:5)
mtcars[d$n,]
【问题讨论】:
标签: r
我有包含数值的字符向量。我想根据向量对数据进行子集化。
x = '1,2,3,4,5'
n = noquote(gsub(","," ",x))
mtcars[n,]
它不工作。
但下面的代码有效。
d = data.frame(n = 1:5)
mtcars[d$n,]
【问题讨论】:
标签: r
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
【讨论】: