楼主: 姗姗211
121 5

[问答] 求助:想要去掉for循环对矩阵中元素按每两行不同列元素粘贴 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

35%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
46 点
帖子
3
精华
0
在线时间
11 小时
注册时间
2019-7-9
最后登录
2019-9-12

姗姗211 发表于 2019-9-6 20:54:16 |显示全部楼层
10论坛币
即矩阵元素为第一行1,2,3,4;第二行2,3,4,5;对他们两行进行粘贴为12,23,34,45;矩阵由多行,两两粘贴的情况下,怎么不使用for循环写出来,用for数据大的话会很慢
我的代码是这个样子的:
n<-1
for (i in 1:(nrow(GO_matrix)-1)) {
    for (j in (i+1):nrow(GO_matrix)) {
      x1<-GO_matrix[i,]
      x2<-GO_matrix[j,]
      x3<-paste(x1,x2,sep = "")
      gene_gene[n,]<-x3
      n<-n+1
    }
  }
怎么能去掉for循环,谢谢。

stata SPSS
wangfs111222 发表于 2019-9-7 19:24:28 |显示全部楼层
mt1 <- matrix(1:8,ncol=2)

paste0(mt1[,1],mt1[,2])
回复

使用道具 举报

jiangbeilu 学生认证  发表于 2019-9-7 21:07:49 |显示全部楼层
借楼上的数据,你可以把原矩阵的最后一行去掉,和第一行去掉,生成2个矩阵。然后对应元素用paste即可
  1. mt1 <- matrix(1:8,ncol=2)

  2. mt1_init = mt1[-nrow(mt1),]
  3. mt1_first = mt1[-1,]

  4. matrix(paste0(mt1_init,mt1_first),ncol=2)
复制代码
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

回复

使用道具 举报

姗姗211 发表于 2019-9-9 17:38:36 |显示全部楼层
wangfs111222 发表于 2019-9-7 19:24
mt1
我的数据是一个很大的数据,将近一万行,如果使用你说的会更麻烦
回复

使用道具 举报

姗姗211 发表于 2019-9-9 18:52:42 |显示全部楼层
jiangbeilu 发表于 2019-9-7 21:07
借楼上的数据,你可以把原矩阵的最后一行去掉,和第一行去掉,生成2个矩阵。然后对应元素用paste即可
我的目的是n行数据,两两粘贴,比如说第一行与剩下第n-1行,第二行与n-2行,一直这样子粘贴
回复

使用道具 举报

wangfs111222 发表于 2019-9-9 19:26:06 |显示全部楼层
本帖最后由 wangfs111222 于 2019-9-9 19:37 编辑

n.samples <- 10000

a.1 <- matrix(1:(3 * n.samples),nrow=3)
a.1
b.1 <- a.1[1:(nrow(a.1)-1),]
b.2 <- a.1[2:nrow(a.1),]
system.time(b.3 <- paste0(b.1,b.2))
# 用户 系统 流逝
# 0.01 0.00 0.02

你要的10000行耗时
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

回复

使用道具 举报

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

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-9-24 17:39