2013-05-16 32 views
2

令和向量說你有載體的列表:相應名稱

L = list() 
L[[1]]= c(2,34,6,7,3) 
L[[2]]= c(3,4,6,8,1) 
names(L[[1]])=c("A","B","C","D","E") 
names(L[[2]])=c("A","R","C","D","F") 
L 

## [[1]] 
## A B C D E 
## 2 34 6 7 3 
## 
## [[2]] 
## A R C D F 
## 3 4 6 8 1 

而且我想每個元素的名稱來概括了2個載體...結果:

A B C D E F R 
5 34 12 15 3 1 4 

謝謝

回答

4

使用tapply

另一種解決方案
> tapply(unlist(L), names(unlist(L)), sum) 
A B C D E F R 
5 34 12 15 3 1 4 

編輯

它甚至會工作,如果你的載體有不同的長度,見例如:

> L = list() 
> L[[1]]= 1:10 
> L[[2]]= c(3,4,6,8,1) 
> names(L[[1]])=LETTERS[1:10] 
> names(L[[2]])=c("A","R","C","D","F") 

> tapply(unlist(L), names(unlist(L)), sum) 
A B C D E F G H I J R 
4 2 9 12 5 7 7 8 9 10 4 # IT WORKS!!! 
+1

我比我更喜歡這個。 –

+0

感謝它現在的作品...但是,如果我的向量不是相同的長度,它不會工作 –

+0

@joellapalme看到我的編輯。 –

2
x <- aggregate(unlist(L), by=list(names(unlist(L))), FUN=sum) 
result <- x$x 
names(result) <- x$Group.1 
result 
## A B C D E F R 
## 5 34 12 15 3 1 4 
+0

感謝它的工作現在...但是如果我的載體是不一樣的長度,它不會工作。 –

+0

當然,即使在這種情況下它也可以工作。 –