4
我的問題基本上與此問題相同:data.table join then add columns to existing data.frame without re-copy。r - data.table加入,然後將所有列從一個表添加到另一個
基本上我有一個模板的鍵,我想從其他data.tables通過相同的鍵分配列的模板。
> template
id1 id2
1: a 1
2: a 2
3: a 3
4: a 4
5: a 5
6: b 1
7: b 2
8: b 3
9: b 4
10: b 5
> x
id1 id2 value
1: a 2 0.01649728
2: a 3 -0.27918482
3: b 3 0.86933718
> y
id1 id2 value
1: a 4 -1.163439
2: b 4 2.267872
3: b 5 1.083258
> template[x, value := i.value]
> template[y, value := i.value]
> template
id1 id2 value
1: a 1 NA
2: a 2 0.01649728
3: a 3 -0.27918482
4: a 4 -1.16343917
5: a 5 NA
6: b 1 NA
7: b 2 NA
8: b 3 0.86933718
9: b 4 2.26787248
10: b 5 1.08325793
>
但如果x
和y
有說100列,那麼它是不可能寫出來的value := i.value
語法的所有列。有沒有辦法做同樣的事情,但所有的列在x
和y
?
編輯: 如果我做y[x[template]]
,然後它會創建單獨的value
列,這是不打算:
> y[x[template]]
id1 id2 value value.1
1: a 1 NA NA
2: a 2 NA 0.01649728
3: a 3 NA -0.27918482
4: a 4 -1.163439 NA
5: a 5 NA NA
6: b 1 NA NA
7: b 2 NA NA
8: b 3 NA 0.86933718
9: b 4 2.267872 NA
10: b 5 1.083258 NA
>
是的,但我想分配列'模板'。本質上,我想用許多'data.tables'來填充模板,比如'x'。例如,'x'將包含某些鍵的值,'y'將包含其他鍵的值。所以模板< - x [template]將不起作用。 – ezbentley
@阿倫:我加了一些例子,希望澄清我的情況。 – ezbentley
太好了,現在我明白你的意思了。怎麼樣[這篇文章](http://stackoverflow.com/a/22596160/559784)?你可以構造一個類似的表達式,並且每次都是「eval」。 – Arun