Быстрый вопрос о подмножестве через класс символов - PullRequest
0 голосов
/ 24 января 2011

Я думаю, что это очень быстро, но я решил спросить, потому что не могу на всю жизнь вспомнить, как это сделать ...

Предположим, у меня есть данные.frame (назовите его DF) со следующими заголовками: "Blah", "Bleh" и "Meh".
. У меня также есть вектор класса символов foo, элементы которого совпадают сзаголовки DF.

Blah <- rnorm(10)
Bleh <- runif(10)
Meh <- rnorm(10)
DF <- data.frame(Blah,Bleh,Meh)
foo <- c(rep("Blah",3),rep("Bleh",3),rep("Meh",3))

Я хотел бы сделать следующее: Подмножество DF согласно i-му элементу в пределах foo.Я думал, что это - DF$foo[1] - будет работать, но это не так.

Я знаю, что могу подмножество, используя names и ==, но я думаю, что есть намного короче (1 строка) Кстати?

Ответы [ 3 ]

3 голосов
/ 25 января 2011

DF$foo[1] пытается вернуть первый элемент столбца с именем foo (который не существует). Вы хотите DF[foo[1]].

2 голосов
/ 25 января 2011
subset(DF, select=foo[3])
              Blah
1   0.814939149951
2  -0.800644571486
3  -0.424080059851
4   1.012792429940
5   1.291888735720
6   0.642523425131
7   0.537486547429
8   0.315031122082
9  -0.296439716108
10  0.372453578695
1 голос
/ 25 января 2011

Это то, что вы хотите?

DF[ ,foo][1]

Ах, Джошуа написал, когда я печатал ... Вы также можете выбрать области столбцов, например:

DF[1:3,foo][1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...