我有以下数据帧(df
)
start end
1 14379 32094
2 151884 174367
3 438422 449382
4 618123 621256
5 698271 714321
6 973394 975857
7 980508 982372
8 994539 994661
9 1055151 1058824
. . .
. . .
. . .
Run Code Online (Sandbox Code Playgroud)
带有数值(vec
)的长向量.
我想在每一行中添加另一列,其中包含相应位置的值的平均值vec
.例如,第一行将具有mean(vec[14379:32094])
.我试过玩transform
但却无法完成这个简单的任务.
Dir*_*tel 71
这是一个非常标准的用例apply()
:
R> vec <- 1:10
R> DF <- data.frame(start=c(1,3,5,7), end=c(2,6,7,9))
R> DF$newcol <- apply(DF,1,function(row) mean(vec[ row[1] : row[2] ] ))
R> DF
start end newcol
1 1 2 1.5
2 3 6 4.5
3 5 7 6.0
4 7 9 8.0
R>
Run Code Online (Sandbox Code Playgroud)
plyr
如果您愿意,也可以使用,但这里不需要超越基础R的功能.