R data.table逐列乘法
我有一个简单的乘法问题,它不会导致任何警告,但不会执行正确的操作。我只想添加一列GDP_q0、GDP_q1和GDP_q2,它们等于价格+失业率+外汇*CPI。使用数据表无法正确执行多重应用程序(我不知道在这种情况下数据表的行为)价格、失业率和cpi总是相等的(价格q0=价格q1=价格q2) 这是在做正确的事情R data.table逐列乘法,r,data.table,R,Data.table,我有一个简单的乘法问题,它不会导致任何警告,但不会执行正确的操作。我只想添加一列GDP_q0、GDP_q1和GDP_q2,它们等于价格+失业率+外汇*CPI。使用数据表无法正确执行多重应用程序(我不知道在这种情况下数据表的行为)价格、失业率和cpi总是相等的(价格q0=价格q1=价格q2) 这是在做正确的事情 for(j in 0:2){ nam= paste0('gdp_q', j) pf[, (nam) := pf$price + pf$unemployment- pf[[past
for(j in 0:2){
nam= paste0('gdp_q', j)
pf[, (nam) := pf$price + pf$unemployment- pf[[paste0('FX_q', j)]] * pf$CPI]
}
我认为它应该与使用数据表的乘法中的一个技巧相联系。如果我们想在多个列上执行此操作,请使用
lappy
或Map
priceq <- paste0('price_q', 0:2)
unemploymentq <- paste0('unemployment_q', 0:2)
Fxq <- paste0('FX_q', 0:2)
CPIq <- paste0('CPI_q', 0:2)
f1 <- function(x, y, u, v) x + y - u * v
test[, paste0('gdp_q', 0:2) := Map(f1, mget(priceq),
mget(unemploymentq), mget(Fxq), mget(CPIq))]
priceq@ricpiana。也许,您可以使用.SD[,…priceq]
来代替mget
,这应该会使它更快
priceq <- paste0('price_q', 0:2)
unemploymentq <- paste0('unemployment_q', 0:2)
Fxq <- paste0('FX_q', 0:2)
CPIq <- paste0('CPI_q', 0:2)
f1 <- function(x, y, u, v) x + y - u * v
test[, paste0('gdp_q', 0:2) := Map(f1, mget(priceq),
mget(unemploymentq), mget(Fxq), mget(CPIq))]