2015-02-01 2 views
1

Этот вопрос относится к an earlier one, за исключением ответа там (использование c() функция) является именно тем, что было не, работающим для меня.Как добавить вектор в список векторов в R?

Сначала я создаю список векторов, а затем дополнительный вектор.

a_list <- lapply(mtcars, as.integer) 
junk <- c(1:length(a_list[[1]])) 

Теперь, если использовать c(a_list, junk) (как это было предложено в ответ на предыдущий вопрос), я получаю совершенно другой ответ от того, что я получаю, если я скажу a_list[["junk"]] <- junk (последний приносят желаемый результат). Похоже, что то, что добавляется прежним подходом, - as.list(junk).

Как добавить junk используя c() без его преобразования в результат as.list(junk)?

ответ

2

Использовать list() следующим образом: c(a_list, junk=list(junk)).

При попытке точно определить, что было добавлено в проблемном сценарии выше (чтобы лучше сформулировать мой вопрос), я понял, что list и as.list делают очень разные вещи. Путем превращения мусора в одноэлементный список (используя list()), он добавляется «как есть» желаемым образом.

На самом деле это было похоронено в комментарии «показать больше комментариев» к ответу Дирка Эддельбуэттеля и (более смущающе) в помощи для c(). Запрашиваемая помощь:

## do *not* use 
c(ll, d = 1:3) # which is == c(ll, as.list(c(d = 1:3)) 
## but rather 
c(ll, d = list(1:3)) # c() combining two lists 
Смежные вопросы