2016-07-22 35 views
0

下面的數據和代碼來自?? data.table和example(data.table)。爲什麼我們在data.table中產生NULL作爲副作用。表

DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9) 
DT[2:5,cat(v,"\n")]  # just for j's side effect 

2 3 4 5 
NULL 

我不明白爲什麼我們在cat(v)後得到NULL。 我們是否能夠得到NULL?

回答

4

你得到NULL,因爲在數據表的j位置,即表達,cat回報NULL,因此你會得到返回的NULL值,因爲沒有變量捕捉值時,它會在控制檯中印默認。如果你不想打印它,你可以將它分配給一個變量:

x <- DT[2:5, cat(v, "\n")] 
# 2 3 4 5 
x 
# NULL 
+0

非常感謝。現在我很困惑,爲什麼我們首先得到2,3,4,5。你能否給我一個簡單的解釋? – Darren

+1

由於貓功能的副作用,您會得到2,3,4,5。您在數據表的i位置指定了2:5,這意味着cat會在索引2:5處打印出矢量v,在您的情況下,這是2,3,4,5。 – Psidom

+0

謝謝!現在我明白了 – Darren

相關問題