输入一个对象的行

时间:2015-07-22 12:23:09

标签: r matrix dataframe

你好,我怎么能写一个函数,它把一个数字作为输入,在这个数字中应该将aline输入现有的对象

matrix(rnorm(9),ncol=3,nrow=5)
x<-c(1,7,8)

现在应该将每个向量输入到矩阵第3行的矩阵中(所以它应该是新的co行3。其他行只是一个被推的所以旧的第3行是第4行然后

2 个答案:

答案 0 :(得分:0)

这是我之前写的一个功能。我一直在使用它。

#Christopher Barry, 28/01/2015

insertRows <- function(DF, mtx, row){
  if(is.vector(mtx)){
    mtx <- matrix(mtx, 1, length(mtx), byrow=T)
  }
  nrow0 <- nrow(DF)
  nrows <- nrow(mtx)
  ncols <- ncol(DF) #should be same as for mtx
  if(is.matrix(DF)){DF <- rbind(DF, matrix(0, nrows, ncols))}
  if(nrow0 >= row){
    DF[seq(row+nrows,nrow0+nrows),] <- DF[seq(row,nrow0),]
    DF[row:(row+nrows-1),] <- mtx
  }else{
    DF[seq(nrow0+1,nrow0+nrows),] <- mtx
  }
  return (DF)
}

编辑为矩阵和数据框架工作。

答案 1 :(得分:0)

这样做的一种方法是:

aa<- matrix(rnorm(9),ncol=3,nrow=5)
x<-c(1,7,8)
rbind(aa[1:2,],x,aa[3:5,])

类似的解决方案,实际上: R: Insert a vector as a row in data.frame