在R中向数据框添加一列

我有以下数据框( 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 . . . . . . . . . 

和数值( vec )的长vector。

我想添加到每一行的另一列,在vec中的相应位置的值的意思。 例如,第一行将有mean(vec[14379:32094]) 。 我曾尝试玩transform但无法完成这个简单的任务。

这是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> 

如果你愿意,你也可以使用plyr ,但是这里并不需要超越base R的函数。

即使这是一个7年的问题,新来R的人应该考虑使用data.table ,package。

一个data.table是一个data.frame,所以你可以做/所有你可以做的data.frame。 但是很多人认为data.table的ORDERS数量级更快。

 vec <- 1:10 library(data.table) DT <- data.table(start=c(1,3,5,7), end=c(2,6,7,9)) DT[,new:=apply(DT,1,function(row) mean(vec[ row[1] : row[2] ] ))]