2012-08-16 91 views
1

我试图通过data.frame搜索和在同一行中得到一个值,数列之遥。我输入了文件,但剩下的是搜索变量。在那,我不知道如何开始。在表格的小样本中,我已经包含在下面,我需要搜索并找到一个值(它作为变量存储在id中)(将是唯一的),并将该值返回给一个新变量,用于图表标题。[R匹配值与变量

id,cov 
2A,50 
2b,3 
8f,12 

我想我可能不得不使用这样的事情:

comparison <- compare(s,search,allowAll=TRUE) 

,但我希望有人对这个问题提出了一些建议或指导,以限制我的浮躁

#Got the cov column 
m<-data.frame(MNS=c(mns$cov)) 
head(m) 
    MNS 
1 50 
2 3 
3 12 
#Got the id column 
s<-data.frame(SPL=c(mns$id)) 
#The value that I would like to search for 
search<-'2b' 
head(search) 
[1] "2b" 
#My attempt to find it 
see<-mns[mns$id=='search',] 
head(see) 
[1] sample_id        
[2] meanCov            
<0 rows> (or 0-length row.names) 
+3

我不知道我跟......做'MNS [MSN的$ id == '2B',]'没有做什么你想? – Justin 2012-08-16 19:07:11

+0

不,对不起,不好意思。搜索实际上是一个变量,基于单独的文件并使用msn [msn $ id =='search',]只是给出列名称,而不是我需要的列的值。 – Stephopolis 2012-08-16 19:25:53

+0

它不'给'列名称。它使用下面的行值“打印”列名称。你在控制台看到的不是返回的实际对象。 – 2012-08-16 19:27:34

回答

3

我觉得你像这样

mns[msn$id == "2b", "cov"] 

更新了新的意见

msn[msn$id == search, "cov"] 

msn[msn$id %in% search, "cov] 
+0

比基于匹配的方法有优势,所有匹配都会被返回。也可以使用'%in%'而不是“==”并获得更多的通用性。 – 2012-08-16 19:25:54

+0

这是什么%在%做?是一个近似匹配? – Stephopolis 2012-08-16 19:46:50

+0

这就像匹配,但它返回一个逻辑向量。 – 2012-08-16 19:48:31