楼主: 姗姗211
1088 6

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

  • 0关注
  • 0粉丝

等待验证会员

小学生

78%

还不是VIP/贵宾

-

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

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循环,谢谢。

关键词:for循环 For 矩阵元素 不使用
沙发
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 |只看作者 |坛友微信交流群
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   查看全部评分

使用道具

7
姗姗211 发表于 2019-10-22 12:13:40 |只看作者 |坛友微信交流群
wangfs111222 发表于 2019-9-9 19:26
n.samples
你这里写的只是两行,我是很多行,类似于下图然后粘贴 捕获.PNG

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

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

GMT+8, 2024-4-25 18:46