2015-10-20 86 views
1

我是R data.table包的新用戶,我注意到我的data.tables中有一些不尋常的東西,我沒有找到解釋文檔或本網站的其他地方。attr(*,「internal.selfref」)= <externalptr>出現在data.table Rstudio

當內Rstudio使用data.table package,和查看「環境」面板內的特定data.table,我看到以下字符串出現在data.table

attr的端部(* ,「internal.selref」)= < externalptr>

如果我在控制檯中打印相同的data.table,則不會顯示此字符串。

這是一個錯誤,還是data.table(或Rstudio)的固有特性?我是否應該擔心這是否會影響下游流程如何處理這些數據?是

我運行的版本如下:提前
data.table版本1.9.6 Rstudio版本0.99.447 OSX 10.10.5

道歉,如果這只是我作爲一個個無知的新手。

+1

不用擔心。然而,data.table是爲了查看大量數據集而沒有意義,所以你應該擺脫這個習慣。 – Roland

+0

@Roland在不知道發生了什麼的情況下無法使用數據集。我通常使用類似'View(DT [sample(.N,1000)])'的東西,它對於任何數據大小都非常快速。 –

+1

是的,我常常使用'View'(當然是在香草R中)。除了處理biggish數據之外,data.table對於快速分組操作和清晰的語法也很好。 – Frank

回答

1

我剛纔問了一個問題,就是data.table包的主要作者Matt Dowle。

這是一個bug,還是data.table(或Rstudio)的一個固有特性?

顯然這個屬性在data.table內部使用,它不是RStudio中的錯誤,事實上RStudio正在完成它顯示對象屬性的工作。

我應該關心這是否會影響這些數據如何被下游流程處理?

不,這不會影響任何東西。

1

對於那些誰是好奇,爲什麼創建這個屬性,我相信這是在data.table manual()解釋下節的setkey:

在v1.7.8,關鍵< - 語法已被否決。 < - 方法複製整個表格,並且我們知道 無法避免該複製,而不會在R本身發生變化。請使用set *函數, 根本不會複製。 setkey接受未加引號的列名稱,但setkeyv 接受一個列名稱向量。 用<鍵複製的問題(對於data.table) - (除了比較慢)是R不是 保持了over分配的truelength,但看起來好像它已經。通過引用 添加列,使用:=在密鑰<之後 - 因此是內存覆蓋並且最終是段錯誤; 分配的內存在密鑰< - 的副本之後並不存在。 data.tables現在有一個屬性 .internal.selfref來捕獲和警告這樣的副本。這個屬性已經在 中實現了,它與same()和object.size()友好。 出於同樣的原因,請使用通過引用修改對象的其他set *函數,而不是使用導致複製整個對象的<運算符的 。