我有一個數據表和一個可擬合係數數據表。我想計算每行的擬合值。具有匹配列名稱的R data.table點積(對於每個組)
dt = data.table(a = rep(c("x","y"), each = 5), b = rnorm(10), c = rnorm(10), d = rnorm(10))
coefs = data.table(a = c("x","y"), b = c(0, 1), d = c(2,3))
dt
# a b c d
# 1: x -0.25174915 -0.2130797 -0.67909764
# 2: x -0.35569766 0.6014930 0.35201386
# 3: x -0.31600957 0.4398968 -1.15475814
# 4: x -0.54113762 -2.3497952 0.64503654
# 5: x 0.11227873 0.0233775 -0.96891456
# 6: y 1.24077566 -1.2843439 1.98883516
# 7: y -0.23819626 0.9950835 -0.17279980
# 8: y 1.49353589 0.3067897 -0.02592004
# 9: y 0.01033722 -0.5967766 -0.28536224
#10: y 0.69882444 0.8702424 1.24131062
coefs # NB no "c" column
# a b d
#1: x 0 2
#2: y 1 3
對於DT每個a=="x"
行,我想0*b+2*d
;並且對於dt中的每個a=="y"
行,我想要1*b+3*d
。
是否有一個數據表的方式來做到這一點沒有硬編碼的列名?我很高興將列名放在變量cols = colnames(coefs)[-1]
中。
很容易將組和rbind
一起循環,因此如果分組導致麻煩,請忽略該部分。
我的相似問題:http://stackoverflow.com/q/19279075/對於它的價值,我認爲人們會關心動態匹配名稱是很自然的事情,並且這不會使這個問題成爲「移動目標「完全可以。 – Frank