我想在data.table中明智地應用多個乘法列。例如:如何高效地執行列明智乘法?
require(data.table)
DT <- data.table(a=1:5,b=2:6,c=3:7,
d=rep(1,5),e=rep(0,5),f=rep(-1,5))
我想* d,b *表E和C * f的結果,因爲我有400列乘400另一列, 不知有一些有效的解決方案。謝謝!
我想在data.table中明智地應用多個乘法列。例如:如何高效地執行列明智乘法?
require(data.table)
DT <- data.table(a=1:5,b=2:6,c=3:7,
d=rep(1,5),e=rep(0,5),f=rep(-1,5))
我想* d,b *表E和C * f的結果,因爲我有400列乘400另一列, 不知有一些有效的解決方案。謝謝!
乘以一個由其他列集:
> DT[,1:3]*DT[,4:6]
a b c
1: 1 0 -3
2: 2 0 -4
3: 3 0 -5
4: 4 0 -6
5: 5 0 -7
爲了您的問題比較大,有800列,它應該僅僅是:
> DT[,1:400]*DT[,401:800]
是的,它很容易,但我困惑太長!
DT[,paste0("a",1:3):= DT[,1:3]*DT[,4:6]]
爲什麼不接受其他答案,而不是發佈自己的答案。他確實給你答案。你沒有提到有關在問題中添加新列的任何內容。 –
對不起!這是我的第一個問題,隨着Spacedman的回答,我意識到如何去做。謝謝提醒我! – user1730977
另一種方法:
DT[, Reduce('*',list(DT[,c("a","b","c")],DT[,c("d","e","f")]))]
謝謝!我想知道這是否可以通過colnames完成並附加到原始data.table? – user1730977
@ user1730977'DT [,(new_names):= DT [,1:400] * DT [,401:800]]'工作,在這裏填寫new_names對象。不過,我認爲這在data.table中是一個非常不規範的事情。是的,你可以輸入col名稱代替1:400和401:800。 – Frank