2018-11-07
阅读量:
830
关于合成新数据库的问题
R语言怎么把数据框每列分割成两列,然后合并成新的数据框?
比如数据如下:
kk <- matrix(c("CG","CC","GG","GG","CG","CG","CC","CG","CG","CC","GG","GG"),3,4)
kk <- as.data.frame(kk)
把每一列的字符串分割成两个字符,然后各自成为新的列,再进行合并。
library(stringr)
split <- function(temp){
return(str_split_fixed(temp, "", 2))
}
jj <- matrix(0,nrow(kk), ncol(kk))
for(i in 1:ncol(kk)){
temp <- split(kk[,i])
jj <- cbind(jj, temp)
}
jj <- jj[,-c(1:4)]
矩阵cbind循环越往后越慢,而且基因型数据通常又很大。
用list存储,再解成matrix,速度就快得多,试一下。
nrows <- 2000
kk <- matrix(rep(c("CG","CC","GG","GG","CG","CG","CC","CG","CG","CC","GG","GG"), 10000),nrows, byrow=T) %>%
as.data.frame
jj <- list()
for(i in 1:ncol(kk)){
jj[[i]] <- kk[,i] %>% str_split_fixed("", 2)
}
jj <- jj %>% unlist %>%
matrix(nrow=nrows, byrow=T) %>%
data.frame(stringsAsFactors=F)
0.0000
0
3
关注作者
收藏
评论(0)
发表评论
暂无数据
推荐帖子
0条评论
0条评论
1条评论