我想對data.table
中的行的子集執行操作,這會導致比我開始使用的行數更多。有沒有簡單的方法來擴大原來data.table
以適應此?如果不是,我怎麼能做到這一點?通過在列上操作擴展data.table
以下是我原始數據的示例。
DT <- data.table(my.id=c(1,2,3), unmodified=c("a","b","c"), vals=c("apple",NA,"cat"))
DT
my.id unmodified vals
1: 1 a apple
2: 2 b NA
3: 3 c cat
而這是我期望的輸出。
DT
my.id unmodified vals
1: 1 a apple
2: 2 b boy
3: 2 b bat
4: 2 b bag
5: 3 c cat
新行也可以出現在最後,我不關心順序。我嘗試了DT[my.id == 2, vals := c("boy","bat","bag")]
,但是它忽略了最後2個帶有警告的條目。
TIA!
編輯:我的原始數據集有大約1000萬行,儘管缺少值的條目只出現一次。如果可能,我不想創建data.table
的副本。
謝謝!這對我的樣本完美。但是,這會創建原始data.table的副本,對嗎?我的原始數據大約有一千萬行,我需要重複幾次這個操作。參考解決方案是否有修改?我補充說,作爲剛纔對這個問題的一個編輯。 – Naumz
我不認爲這可以通過引用完成,也許你可以嘗試用你想要的ID創建一個小的data.table,然後使用'rbindlist'將它與原來的一個綁定。這應該比上面的方法更快。 – Psidom
是的,無法通過引用更改行集:https://stackoverflow.com/questions/10790204/how-to-delete-a-row-by-reference-in-data-table – Frank