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