使用R从变量中提取包含字符串的所有行

使用R从变量中提取包含字符串的所有行,r,matrix,R,Matrix,我有一个元数据文件存储为.tsv,我将其读入R并另存为META。我需要提取包含给定字符串male的所有行,这里存储在变量sample中 完整的脚本有很多这样的操作,所以我将模式存储在下面的示例中非常重要。这些错误妨碍了我努力改进的方式 IN <- "/home/zchadva/Scratch/output/cov" #metadata META <- read.table("/home/zchadva/Scratch/data/hipsci/rnaseq/hipsci.qc1_sa

我有一个元数据文件存储为.tsv,我将其读入R并另存为META。我需要提取包含给定字符串male的所有行,这里存储在变量sample中

完整的脚本有很多这样的操作,所以我将模式存储在下面的示例中非常重要。这些错误妨碍了我努力改进的方式

IN <- "/home/zchadva/Scratch/output/cov"

#metadata
META <- read.table("/home/zchadva/Scratch/data/hipsci/rnaseq/hipsci.qc1_sample_info.20160926.tsv", header = TRUE, sep = "\t")

#Set study/table variables
sample <- "\\<male\\>"
control <- "female"

#Grep all rows containing "male" from the table META
sample.list <- META[grep(sample, META, value=TRUE)]
例如:

**coloumn** <- Gender
sample.list <- (META[grepl(sample, META$**coloumn**), ]

#Table example simplified
ID    Disease    Gender    Cell
JX1   ibd        male      liver
PTY   healthy    male      liver
HB3   ibd        female    brain
PO3   bbs        male      

#Desired layout in sample.list
JX1   ibd        male      liver
PTY   healthy    male      liver
PO3   bbs        male      
非常感谢您的帮助。我已经尝试了几个小时了,grepl将比grep提供更好的结果,因为您可以使用逻辑向量来索引数据帧

META <- 
  data.frame(ID = c("JX1", "PTY", "HB3", "PO3"),
             Disease = c("ibd", "healthy", "ibd", "bbs"),
             Gender = c("male", "male", "female", "male"),
             Cell = c("liver", "liver", "brain", "liver"))

sample <- "male"
control <- "female"

META[grepl("^male", META$Gender), ]

   ID Disease Gender  Cell
1 JX1     ibd   male liver
2 PTY healthy   male liver
4 PO3     bbs   male liver

太近了!尝试一下META[greplsample,META$Gender],我之前尝试过,但它只返回了我的第一行标题。标题上的每个标签都是分开的,但是该命令的输出将其显示为:[1]名称单元格类型[3]从供体[5]生物样本\u id组织\u生物样本\u id[7]捐赠者\生物样本\ id源自\细胞\类型使用上面的示例,它看起来是这样的:[1]id[2]疾病[3]性别[4]CellI在我的建议中有一个缺陷,但扩展并修复了该缺陷作为答案。根据您所描述的内容,听起来好像您没有在[]之间使用逗号。为数据帧编制索引需要元[行,列]。如果你使用META[index],你将只索引列,而不是行。非常感谢你的帮助,抱歉我是一个彻头彻尾的R noob,只想检查这些东西:非常感谢你的帮助,抱歉我是一个彻头彻尾的R noob,只想检查这些东西:-元数据表太大了,我需要使用数据吗。frameID。。。剪断你在那里META[grepl^male,META$Gender,]刚刚在命令中执行了这个命令,它仍然只给了我不包含male的标题行——理想的情况是在META[grepl^male,META$Gender]中,而不是写male,我希望它调用示例。我将使用不同的变量(如疾病、细胞等)再次运行脚本,如果我只需要更改1位文本,它会更干净
META <- 
  data.frame(ID = c("JX1", "PTY", "HB3", "PO3"),
             Disease = c("ibd", "healthy", "ibd", "bbs"),
             Gender = c("male", "male", "female", "male"),
             Cell = c("liver", "liver", "brain", "liver"))

sample <- "male"
control <- "female"

META[grepl("^male", META$Gender), ]

   ID Disease Gender  Cell
1 JX1     ibd   male liver
2 PTY healthy   male liver
4 PO3     bbs   male liver