楼主: EveIOU
2477 14

[问答] for循环问题,求朋友们指点 [推广有奖]

11
drunkfish69 发表于 2020-4-17 14:10:13
EveIOU 发表于 2020-4-17 12:28
多谢朋友。
我本来有个设想:有时候,我想用hsa-miR-629匹配hsa-miR-629-5p, hsa-miR-629-3p(这里只是举 ...
这个可以考虑截取前11个字符,然后与搜索键入的关键字进行左链接。

12
drunkfish69 发表于 2020-4-17 16:25:46
  1. library(tidyverse)
  2. library(curl)

  3. GSE <- c('GSE102286', 'GSE13937')
  4. key <- c(
  5.   "hsa-miR-3607", "hsa-miR-3677", "hsa-miR-4661", "hsa-miR-548v",
  6.   "hsa-miR-605", "hsa-miR-629"
  7. )
  8. miR.signature <- as.data.frame(key)

  9. #读取文件这一段可以改下放入下面的循环体内,文件名GSE[i]组合,留给你自己玩吧
  10. GSE13937 <- read.table(
  11.   file = "./for.match/GSE13937_series_matrix.txt",
  12.   header = T, sep = "\t", fill = T,
  13.   comment.char = "!"
  14. )
  15. GSE102286 <- read.table(
  16.   file = "./for.match/GSE102286_series_matrix.txt",
  17.   header = T, sep = "\t", fill = T,
  18.   comment.char = "!"
  19. )


  20. for (i in 1:NROW(GSE)) {
  21.   name <- paste0('find', '_', GSE[i])
  22.   temp <- get(GSE[i]) %>%
  23.     inner_join(miR.signature, by = c("ID_REF" = "key"))
  24.   assign(name, temp)
  25. }
  26. # 输出结果是2个df:
  27. find_GSE102286; find_GSE13937
复制代码

13
EveIOU 发表于 2020-4-17 21:36:28
drunkfish69 发表于 2020-4-17 16:25
多谢,数据是从GEO数据库下载的,具体他用的什么编码超出我的理解力了。综合考虑您关于编码的判断(复制数据集中"hsa-miR-629"),还有llb_321坛友去掉引号的建议(grep('miR.pattern[k]', ...)的引号),修改我原来的代码,得到下图这样的结果(初始预期) 2020-04-17_205320.png

关于您建议的将数据集中的字符串截取11个字符,进行左连接,不知能否实现我以下目的呢?我目前了解substring可以截取字符串,如果数据集比较多,会不会比较麻烦?
我的新设想是:在我原代码基础上,或者您的代码,加个循环,得到如下结果(手写的),了解具体哪个miR,出现在某个数据集中,还有行数(这个目的是主要的,形式是次要的(grep函数,value = T参数给出了名称去掉value = T参数,就会给出位置:行数)。前面也和您说过,hsa-miR-629和hsa-mir-629(举例,r大写与小写),代表两种不同的东西。grep函数中ignore.case = T参数表示忽略大小写,正好符合我的大小写都匹配的要求。换言之,不管大小写,我都想要。麻烦您再给看一下,多谢!!
[1]GSE13937
character(0)
character(0)
character(0)
character(0)
character(0)
character(0)                       以上6行有没有无所谓,反正是代表没匹配上就行



[2]GSE102286
character(0)
character(0)
character(0)
character(0)                       以上4行有没有无所谓,反正是代表没匹配上就行
[1] "\"hsa-miR-605\""          581  (代表在数据集中的行数)
[1] "\"hsa-miR-629\""          604


2020-04-17_213516.png




14
EveIOU 发表于 2020-4-17 21:42:20
drunkfish69 发表于 2020-4-17 16:25
还有,您提到的     #读取文件这一段可以改下放入下面的循环体内,文件名GSE组合,留给你自己玩吧
我不会啊,怎么放到循环体里,请指点。我前面一直不太懂循环,前几天在网上学习了一下,初步懂了一点点。

15
drunkfish69 发表于 2020-4-17 23:00:30
EveIOU 发表于 2020-4-17 21:42
还有,您提到的     #读取文件这一段可以改下放入下面的循环体内,文件名GSE组合,留给你自己玩吧
我不会 ...
  1. library(tidyverse)
  2. library(curl)

  3. GSE <- c('GSE102286', 'GSE13937')
  4. key <- c(
  5.   "hsa-miR-3607", "hsa-miR-3677", "hsa-miR-4661", "hsa-miR-548v",
  6.   "hsa-miR-605", "hsa-miR-629"
  7. )
  8. miR.signature <- as.data.frame(key)

  9. for (i in 1:NROW(GSE)) {
  10.   get.GSE <- read.table(
  11.     file = paste0("./for.match/", GSE[i], "_series_matrix.txt"),
  12.     header = T, sep = "\t", fill = T,
  13.     comment.char = "!"
  14.   )
  15.   name <- paste0('find', '_', GSE[i])
  16.   temp <- get.GSE %>%
  17.     inner_join(miR.signature, by = c("ID_REF" = "key"))
  18.   assign(name, temp)
  19. }

  20. find_GSE102286; find_GSE13937
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-28 12:34