2014-02-04 3 views
5

Я пытаюсь присоединиться к двум спискам в R, но я действительно не знаю, как это сделать. Мне нужен способ, чтобы присоединиться к спискам, добавив только те элементы, которые имеют другое название от тех, которые в первый список, скажу:Объединение списков в R

list1=list('a'=1,'b'=2,'c'=3,'d'=4,'e'=5); 
list2=list('b'=10,'c'=100,'e'=98); 
list3=OpErAtIoN(list1,list2) 

И получает, что песни3 является list('a'=1,'b'=10,'c'=100,'d'=4,'e'=98)

Знаете ли вы, любой способ сделать это? Спасибо!

ответ

5

setdiff покажет вам, какие элементы списка в «list1», но не в «list2»:

> setdiff(names(list1), names(list2)) 
[1] "a" "d" 

Вы можете использовать [ обычным способом, чтобы извлечь необходимую информацию из «list1»:

list1[setdiff(names(list1), names(list2))] 

И тогда вы можете использовать c, чтобы поставить все это вместе:

c(list1[setdiff(names(list1), names(list2))], list2) 
# $a 
# [1] 1 
# 
# $d 
# [1] 4 
# 
# $b 
# [1] 10 
# 
# $c 
# [1] 100 
# 
# $e 
# [1] 98 
13

Это дает тот же результат, что и ваш пример:

modifyList(list1, list2) 
+4

+1. Никогда не видел эту функцию раньше! – A5C1D2H2I1M1N2O1R2T1

+0

Спасибо !!! То, что я пытался сделать, это написать функцию с очень длинным набором атрибутов, который я не хотел быть в определении функции, таким образом, я смогу использовать многоточие, чтобы изменить только те атрибуты, которые я хочу изменение. Благодаря! –

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