表型数据清洗

1. 生成数据

library(data.table)
test = data.frame(ID = paste0("A",1:1000),y = rnorm(1000))
sampleid = data.frame(ID = paste0("A",sample(1:100,10)))

2. 使用setkey

setDT(test)
str(test)
setkey(test,ID)

3. 根据sampleid进行索引

test[sampleid$ID]

报错:

> test[sampleid$ID]
Error in `[.data.table`(test, sampleid$ID) : 
  i has not evaluated to logical, integer or double

因为sampleid的ID是因子,转化为character即可。

> sampleid$ID = as.character(sampleid$ID)
> test[sampleid$ID]
     ID          y
 1: A17  0.3824981
 2: A85 -0.2304567
 3:  A9 -0.5068925
 4:  A4  0.7707640
 5: A67 -0.1763860
 6: A75 -0.6596452
 7: A19  0.2936062
 8: A26  1.5178032
 9: A93 -0.4725069