2013-09-25 55 views
2

搜索我的數據庫,24000行4列如下:數據庫有R

mydata<-read.csv("data.csv", header=T, sep=',', stringsAsFactors = FALSE, strip.white = FALSE) 
p<- read.csv("datab.csv", header = TRUE, sep = ";",stringsAsFactors = FALSE, strip.white = FALSE) 

> mydata 

      ID  TF score 
1 hsa-let-7a-1 RORA2 878 
2 hsa-let-8c-1 AML1 1000 
3 hsa-let-5f-1 ZIC1 994 
4 hsa-let-7a-1 ZIC2 968 
.    .  . 
.    .  . 

,我有載體p

str(p) 
Factor w/ 16 levels "hsa-miR-150",..: 16 14 3 
>p 
hsa-let-7a-1 
hsa-miR-92a 
hsa-miR-425 
hsa-miR-192 

我想要得到的mydata子集IDmydata存在在p 我用這個代碼:

out <- subset(mydata, ID %in% p) 

但它並沒有檢索mydata子集時,我確信的p了一些要素ID 存在我有流輸出,當我是肯定的p了一些要素ID存在(我加了我自己測試)

> out 
[1] ID  TF  score zScore 
<0 rows> (or 0-length row.names) 

有人可以幫助我,我的錯誤在哪裏。是否可能是由於數據庫的大小?

+1

我相信這個問題是圍繞p(和可能的ID)作爲因素而不是字符 - 如果轉換它們,它將確保它進行字符串比較而不是水平比較。 –

+1

@Steph Locke,我應該將mydata和p轉換爲字符串?怎麼樣 ? – user2806363

+1

'mydata <-read.csv(「data.csv」,header = T,sep =',',stringsAsFactors = FALSE)'和'p <-as.character(p)' –

回答

1

在代碼的第二行刪除多餘的括號並更改strip.white,strip.white = TRUE的值。

mydata <- read.csv("data.csv", header = TRUE, sep=',', stringsAsFactors = FALSE, strip.white = TRUE) 
p <- read.csv("datab.csv", header = TRUE, sep = ";", stringsAsFactors = FALSE, strip.white = TRUE) 

變量p是一個data.frame,所以你必須包括列名。

out <- subset(mydata, ID %in% p$name)