Как я могу выбрать несколько столбцов с определенным названием - PullRequest
1 голос
/ 18 апреля 2019

У меня есть набор данных, содержащий столбцы с различными элементами и их ошибки

(например, Pb, Pb.error, Cu, Cu.error, Zn, Zn.error, Fe, Fe.error).

как выбрать несколько столбцов по их именам (например, я хочу выбрать Pb, Pb.error, Zn, Zn.error) *

Я пробовал:

subset(myData, select = (grep("Pb", dataTitle)))

, который отлично работает для одного элемента и его ошибки (я мог бы выбрать Pb и Pb error).

но он не работает для нескольких элементов и их ошибок:

subset(myData, select = (grep("Pb", dataTitle)|grep("Zn", dataTitle)))

приведенный выше код печатает все имеющиеся у меня элементы (т. Е. Ему не удалось выбрать какой-либо конкретный столбец). Я очень смущен и не знаю причину этого.

Я тоже пытался

subset(myData, select = c("Pb","Pb.Error","Zn","Zn.Error"))

Это прекрасно работает для меня, но мне было интересно, смогу ли я сделать это проще, потому что я верю, что "Pb" и "Pb.error" могут быть выбраны одновременно.

Ответы [ 3 ]

0 голосов
/ 18 апреля 2019

Это тоже работает, если только вы специально не пытаетесь вызвать столбцы ошибок по их связи с соответствующими столбцами данных:

myData[,c("Pb","Pb.Error","Zn","Zn.Error")]
0 голосов
/ 18 апреля 2019

Вот еще один способ с несколькими дополнительными ограничениями для регулярного выражения:

df <- tibble(
  Pb = NA, Pb.error = NA, Cu = NA, Cu.error = NA, Zn = NA, Zn.error = NA, Fe = NA, Fe.error = NA
)

df[, grepl("^(Pb|Zn).*$", names(df))]
0 голосов
/ 18 апреля 2019

Я только что получил ответ через 1 минуту после постановки этого вопроса. Это просто, если я просто использую «Pb | Zn» в функции grep

subset(myData, select(grep("Pb|Zn", dataTitle)))

Это прекрасно работает для меня.

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