В R, как мне индексировать список значений из одного столбца R на основе указанного списка значений из другого столбца?R: список индексов строк из списка значений столбцов?
Я знаю, как выбрать и изменить отдельные номера строк, например:
> foo=data.frame(a=100*1:5,b=LETTERS[5:1])
> foo
a b
1 100 E
2 200 D
3 300 C
4 400 B
5 500 A
> foo$a[c(1,3,5)]= foo$a[c(1,3,5)] + c(3,2,1)
> foo
a b
1 103 E
2 200 D
3 302 C
4 400 B
5 501 A
Но что, если вместо этого я хочу, чтобы выбрать и изменить строки с «B» значения «А», «Е», и "C"? Я думал, что which
может быть правильным инструментом, но лучшее, что я смог придумать это:
> foo$a[which(is.element(foo$b,c("A","E","C")))]
[1] 103 302 501
В этот момент я застрял, потому что в то время как я выбрал правильные строки, они Арен 't в правильном порядке, поэтому я не могу изменять их индивидуально.
Вы также можете отказаться от 'which'. – zx8754
Это, похоже, не работает ... 'foo $ a [foo $ b% in% c (" A "," E "," C ")]' дает мне '[1] 103 302 501', как и 'foo $ a [который (foo $ b% in% c (" A "," E "," C "))]' – user1521655
см. мое редактирование с 'match', я неправильно понял ваш вопрос. Я считаю, что это должно обеспечить то, что вам нужно. – cdeterman