我有一个载体
>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已经解决了这个问题,但我想知道是否有一个简短的方法。
答案 0 :(得分:1)
我们可以使用mapply
来获取&#39; start&#39;的相应元素的seq
。并且&#39;结束&#39;列,子集&#39; a&#39;根据该索引,获取mean
并分配输出以在&#39; df&#39;中创建新列(&#39; Mean&#39;)
df$Mean <- mapply(function(x,y) mean(a[seq(x,y)]), df$start, df$end)