Это продолжение этого вопроса .@ Сотос дал правильный ответ на вопрос, но на самом деле мой вопрос был сформулирован более теоретически.
Я знаю, что все это может быть не очень практично, но это скорее из любопытства.Как я могу получить доступ к именованным атрибутам именованного объекта для «отрицательного выбора» (удаления) по имени?
«Позитивный выбор» аккуратен:
data.frame(year = 1996:1998, group = letters[1:3]) ['group']
group
1 a
2 b
3 c
Но при таком подходе он может быстро стать громоздким с «негативным выбором», особенно для больших фреймов данных:
data.frame(year = 1996:1998, group = letters[1:3])[!names(data.frame(year = 1996:1998, group = letters[1:3])) %in% 'year']
group
1 a
2 b
3 c
Я знаю, что вы можете использовать subset
или dplyr::select
:
data.frame(year = 1996:1998, group = letters[1:3]) %>% select(- year)
# or
subset(data.frame(year = 1996:1998, group = letters[1:3]), select = -year)
group
1 a
2 b
3 c
Но мне было интересно, есть ли другие способы, основанные на выборе с использованием [
, такие какиспользовать решение foo[!names %in% x]
без предварительного присвоения имени foo
и без громоздкого повторения кадра данных, как в моем примере кода.