热线电话:13121318867

登录
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
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子