2014-10-31 68 views
0

這裏的data.table林一起工作:data.table:數字列名

> head(dataTable) 
    persnr  1993  1994 
1: 60487416 0.5777598  NA 
2: 60487511  NA 5.245855 
3: 60488034 0.5777598 23.100167 
4: 60488147 0.5777598  NA 
5: 60488240 0.5777598 23.100167 
6: 60488338 0.5777598 23.100167 

具有多年列數字是非常有用的,因爲我可以簡單地通過這些迭代。然而,它有一個缺點:不是將其作爲對象名稱

dataTable[is.na(1993),] 
Empty data.table (0 rows) of 3 cols: persnr,1993,1994 

它的失誤1993一個整數。否則我無法解釋它將如何滿足這種條件的零行。當列名是數字時,如何檢查NA值?

+3

嘗試:dataTable [is.na(\'1993 \')] – ctbrown 2014-10-31 23:27:17

+0

完美。如果我可能會問一個後續問題:由於迭代的原因,如果我保存了'x < - 1993',怎麼辦? 'dataTable [is.na(\'x \')]'不起作用。 – FooBar 2014-10-31 23:34:59

+0

這是不雅的,但你可以這樣做: 'X < - 引號(is.na(\'1993年\'))'' 的dataTable [EVAL(X)]' 你還是留下的問題創建x的RHS。你也可以使用'?parse' – ctbrown 2014-10-31 23:47:23

回答

0

你可能想對待你data.frame就像一個矩陣,並使用應用功能找到NA值:

申請(dataTable中,1,is.na)

那將比遍歷列更快。

如果你想與任何NA找到行的值,你可以這樣做:

申請(dataTable中,1,函數(X){任何(is.na(X))})