Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:当通过所需行名称向量选择数据帧行时,如何关闭部分模式识别?_R_Dataframe_Row_Pattern Recognition - Fatal编程技术网

R:当通过所需行名称向量选择数据帧行时,如何关闭部分模式识别?

R:当通过所需行名称向量选择数据帧行时,如何关闭部分模式识别?,r,dataframe,row,pattern-recognition,R,Dataframe,Row,Pattern Recognition,在使用所需行名称的向量选择数据帧的行时,我看到了意外的结果。我意识到这是因为R允许数据帧行名称和向量中的stings之间的部分模式识别。下面的问题是。。这似乎是当字符串包含后跟数字的字符时?上述问题中的答案针对单行标准,但没有解释如何将行搜索作为向量处理 例如,如果我有一个数据帧(df): 或者通过所有列,我得到: > df[test_vector,] pdx primary chr6_MIR5689HG 0.4

在使用所需行名称的向量选择数据帧的行时,我看到了意外的结果。我意识到这是因为R允许数据帧行名称和向量中的stings之间的部分模式识别。下面的问题是。。这似乎是当字符串包含后跟数字的字符时?上述问题中的答案针对单行标准,但没有解释如何将行搜索作为向量处理

例如,如果我有一个数据帧(df):

或者通过所有列,我得到:

> 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