Вытащить столбец из таблицы, используя заголовок? - PullRequest
1 голос
/ 19 сентября 2011

Имеется таблица вида:

  a b c
X1 0 1 0
X2 1 0 0
X3 1 0 0

Чтобы извлечь столбец из таблицы:

col.1 <- table$a

Предположим, у вас есть переменная:

col.name <- 'a'

col.1 <- table$col.name

Почему это не работает?Есть ли способ сделать эту работу?

Ответы [ 2 ]

3 голосов
/ 19 сентября 2011

Не работает, потому что оператор "$" не оценивает свой аргумент.Вам нужно использовать «[» или «[[» ».(Не рекомендуется называть вашу таблицу «таблицей». Это сбивает с толку пользователей, использующих функцию table.)

table <- structure(c(0, 1, 1, 1, 0, 0, 0, 0, 0), .Dim = c(3L, 3L), .Dimnames = list(
    c("X1", "X2", "X3"), c("a", "b", "c")), class = "table")
table[ , col.name]
# X1 X2 X3 
#  0  1  1
table[ , "a"]
# X1 X2 X3 
#  0  1  1  
table
table[["a"]]
Error in table[["a"]] : subscript out of bounds
2 голосов
/ 19 сентября 2011
table[[col.name]]

будет работать везде, где будет работать оператор $ (списки и производные классы, такие как фреймы данных).Проблема в том, что $ способ доступа к спискам и фреймам данных - это скорее ярлык, который обрабатывает все, что идет после него, как строку символов.Если вы хотите использовать символьную строку, которая является результатом вычисленного кода, вы должны использовать некую скобочную запись.

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