R:当通过所需行名称向量选择数据帧行时,如何关闭部分模式识别?
在使用所需行名称的向量选择数据帧的行时,我看到了意外的结果。我意识到这是因为R允许数据帧行名称和向量中的stings之间的部分模式识别。下面的问题是。。这似乎是当字符串包含后跟数字的字符时?上述问题中的答案针对单行标准,但没有解释如何将行搜索作为向量处理 例如,如果我有一个数据帧(df): 或者通过所有列,我得到:R:当通过所需行名称向量选择数据帧行时,如何关闭部分模式识别?,r,dataframe,row,pattern-recognition,R,Dataframe,Row,Pattern Recognition,在使用所需行名称的向量选择数据帧的行时,我看到了意外的结果。我意识到这是因为R允许数据帧行名称和向量中的stings之间的部分模式识别。下面的问题是。。这似乎是当字符串包含后跟数字的字符时?上述问题中的答案针对单行标准,但没有解释如何将行搜索作为向量处理 例如,如果我有一个数据帧(df): 或者通过所有列,我得到: > df[test_vector,] pdx primary chr6_MIR5689HG 0.4
> df[test_vector,]
pdx primary
chr6_MIR5689HG 0.4 0
chr6_LINC00680-GUSBP4 0.5 0
chr1_SPRR2 0.6 0
如果行名称中存在完全匹配,则不会发生这种情况:
df2<-data.frame(matrix(c(0.6,10,20,0.5,0.4,rep(0,5)), ncol=2, nrow=))
colnames(df2)<-c("pdx","primary")
rownames(df2)<-c("chr1_SPRR2C","chr6_LINC00680","chr6_MIR5689","chr6_LINC00680-GUSBP4","chr6_MIR5689HG")
> df2
pdx primary
chr1_SPRR2C 0.6 0
chr6_LINC00680 10.0 0
chr6_MIR5689 20.0 0
chr6_LINC00680-GUSBP4 0.5 0
chr6_MIR5689HG 0.4 0
> df2[test_vector,]
pdx primary
chr6_MIR5689 20.0 0
chr6_LINC00680 10.0 0
chr1_SPRR2C 0.6 0
我如何才能绕过这种部分模式识别,同时保持输出与搜索向量的顺序相同,搜索向量约为10000个元素,避免循环,并且向量中的任何元素不存在于行名(df)中,由NA替换
(使用version.string R version 3.6.1(2019-07-05)运行时)仅供参考,社区已不再使用row.names,而是将等效信息保留为data.frame的适当列。一些相关要点的示例:谢谢@sindri_baldur。出于兴趣,如果行名存储为附加列df$geneID,我如何从df返回NA,NA,0.6的向量?
> df[test_vector,"pdx"]
[1] 0.4 0.5 0.6
> df[test_vector,]
pdx primary
chr6_MIR5689HG 0.4 0
chr6_LINC00680-GUSBP4 0.5 0
chr1_SPRR2 0.6 0
df2<-data.frame(matrix(c(0.6,10,20,0.5,0.4,rep(0,5)), ncol=2, nrow=))
colnames(df2)<-c("pdx","primary")
rownames(df2)<-c("chr1_SPRR2C","chr6_LINC00680","chr6_MIR5689","chr6_LINC00680-GUSBP4","chr6_MIR5689HG")
> df2
pdx primary
chr1_SPRR2C 0.6 0
chr6_LINC00680 10.0 0
chr6_MIR5689 20.0 0
chr6_LINC00680-GUSBP4 0.5 0
chr6_MIR5689HG 0.4 0
> df2[test_vector,]
pdx primary
chr6_MIR5689 20.0 0
chr6_LINC00680 10.0 0
chr1_SPRR2C 0.6 0
> df[test_vector,"pdx"]
[1] NA NA 0.6