2012-06-09 2 views
2

С помощью следующего кода, я создаю список:Распаковка вектора в список с каждым элементом вектора в виде отдельных элементов в списке

scales <- c(p="hye", r="t3") 
details <- list(t=20,y="c", scales) 

На данный момент выше, дает мне список, как так:

$t 
[1] 20 

$y 
[1] "c" 

[[3]] 
p  r 
"hye" "t3" 

Однако я хочу список так:

$t 
[1] 20 

$y 
[1] "c" 

$p  
[1] "hye" 

$r 
[1] "t3" 

Поскольку это собирается быть повторно использована в functi Я хочу сохранить scales как векторный аргумент, который затем можно вставить в список. Как я могу это сделать?

ответ

5

Решение:

details = c(list(t=20,y="c"),scales) 
+0

Вы можете сделать Ответ больше, чем комментарий/вопрос. Не вызывает доверия, если вы не уверены, что он работает - что он делает. +1 для не нуждающегося в 'as.list()' .. –

+0

«Это работает?» должен был быть риторическим, как в «Это решение, которое вы ищете?» Хороший момент. Я буду более откровенным в будущем :) –

3

Вы хотите объединить визави c() два списка, так что используйте as.list() для преобразования scales вектора в список перед формированием details:

> details <- c(list(t=20, y="c"), as.list(scales)) 
> details 
$t 
[1] 20 

$y 
[1] "c" 

$p 
[1] "hye" 

$r 
[1] "t3" 
+0

дубликат .....? –

+1

Это кажется более логичным, но @TimP также работает (без явного 'as.list') плюс ответил первым, поэтому я буду принимать этот ответ. Спасибо, но – Kaleb

+1

Прохладный. Да, нет необходимости в 'as.list' здесь, так как результат' c() 'будет списком в любом случае. –

Смежные вопросы