Подмножество данных на основе символьного вектора - PullRequest
0 голосов
/ 16 октября 2018

У меня есть символьный вектор, содержащий числовые значения.Я хочу установить подмножество данных на основе вектора.

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

Это не работает.

Но работает следующий код.

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

1 Ответ

0 голосов
/ 16 октября 2018

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...