2016-11-22 67 views
0

我有一個載體使用兩列的索引來計算第三列

>a<-c(4,5,6,7,8) 

我有一個data.frame

>df<-data.frame(start=c(1,4),end=c(3,5)) 

我想創建這個第三列DF基礎上,開始結束

>df 

start end 
1  1 3 mean(a[1:3]) 
2  4 5 mean(a[4:5]) 

當然意味着(a [df $ start:df $ end])不起作用。 我已經通過創建一個新的data.frame以很長的方式解決了這個問題,但我想知道是否有一個簡短的方法。

+1

爲了精確起見,'A'是[載體](https://stat.ethz.ch/R-manual/R-devel/library/base/html /vector.html),而不是[list](https://stat.ethz.ch/R-manual/R-devel/library/base/html/list.html)。 – yeedle

回答

1

我們可以使用mapply獲得「開始」和「結束」列的相應元素的seq,子集「A」根據該指數,得到mean並指定輸出以創建新的列('是什麼意思「)在 'DF'

df$Mean <- mapply(function(x,y) mean(a[seq(x,y)]), df$start, df$end) 
+0

你可以使函數更簡單嗎?只是'mean(a [x:y])'? – William

+0

@William是的,那是另一種選擇。 – akrun