楼主: anchu
8594 2

[问答] R语言怎么把数据框每列分割成两列,然后合并成新的数据框? [推广有奖]

  • 1关注
  • 1粉丝

硕士生

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2164 点
帖子
106
精华
0
在线时间
162 小时
注册时间
2015-9-13
最后登录
2020-7-25

楼主
anchu 在职认证  发表于 2018-11-6 04:00:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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)]

我自己实现的代码,但是jj合并太慢了,能否有更有效的办法,请大牛指导,多谢了!!!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据框 R语言

回帖推荐

lemon.d 发表于2楼  查看完整内容

矩阵cbind循环越往后越慢,而且基因型数据通常又很大。 用list存储,再解成matrix,速度就快得多,试一下。

沙发
lemon.d 发表于 2018-11-6 10:06:39
矩阵cbind循环越往后越慢,而且基因型数据通常又很大。
用list存储,再解成matrix,速度就快得多,试一下。
  1. nrows <- 2000
  2. kk <- matrix(rep(c("CG","CC","GG","GG","CG","CG","CC","CG","CG","CC","GG","GG"), 10000),nrows, byrow=T) %>%
  3.   as.data.frame
  4. jj <- list()
  5. for(i in 1:ncol(kk)){
  6.   jj[[i]] <- kk[,i] %>% str_split_fixed("", 2)
  7. }
  8. jj <- jj %>% unlist %>%
  9.   matrix(nrow=nrows, byrow=T) %>%
  10.   data.frame(stringsAsFactors=F)
复制代码


藤椅
anchu 在职认证  发表于 2018-11-6 21:51:09
lemon.d 发表于 2018-11-6 10:06
矩阵cbind循环越往后越慢,而且基因型数据通常又很大。
用list存储,再解成matrix,速度就快得多,试一下。 ...
多谢,一看这代码就知道是大牛!!!学习了,再次感谢!!!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 02:40