data.table中setkey 報錯: i has not evaluated to logical, integer or double

表型數據清洗

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章