快速粘贴R中特定范围的矩阵列

快速粘贴R中特定范围的矩阵列,r,R,我问了这个问题 并提出了该方法 g <- rep(1:2, each = 3) t(apply(a, 1, tapply, g, paste, collapse = " ")) g我一直在使用此函数粘贴数据框的列 pasteDFcol <- function(mydf,clmnnames=c("V1","V2"),sepChar=" "){ do.call("paste",c(mydf[clmnnames],sep=sepChar)) } 你为什么不评论一下

我问了这个问题 并提出了该方法

  g <- rep(1:2, each = 3)
  t(apply(a, 1, tapply, g, paste, collapse = " "))

g我一直在使用此函数粘贴数据框的列

pasteDFcol <- function(mydf,clmnnames=c("V1","V2"),sepChar=" "){
    do.call("paste",c(mydf[clmnnames],sep=sepChar))
}   

你为什么不评论一下你的真实矩阵的大小以及什么时候可以接受呢?矩阵是5000乘40000!你有足够的内存吗?处理这样大小的对象需要8-12GB,如果字符元素较大,则需要更多。40000不能被3整除,在实际情况中是否也使用3?是的,那么我应该忽略最后一列。我有足够的内存,内存不是问题。非常感谢,这会更快。唯一的问题是我必须删除
colnames
a=matrix(1:600000,ncol=600)
a1.df <- data.frame(V1=pasteDFcol(as.data.frame(a),clmnnames=paste0("V",1:300)),
              V2=pasteDFcol(as.data.frame(a),clmnnames=paste0("V",301:600)))
a2 <- as.matrix(a1.df)
pasteDFcol <- function(clmStart, clmNum=4, mydf, sepChar=" "){
    do.call("paste",c(mydf[paste0("V",clmStart:(clmStart+clmNum-1))],sep=sepChar))
}
a=matrix(1:400,ncol=40)
pasteDFcol(clmStart=1, clmNum=4,mydf=as.data.frame(a))
a1 <- sapply(seq(1, 40, by=4), pasteDFcol, clmNum=4, mydf=as.data.frame(a))