我有一个data.table,我希望将第1列中的所有值乘以向量的第一个元素,然后将第2列中的所有值乘以向量的第2个元素,等等......
dt <- data.table(col1=c(1,1,1,1), col2=c(2,2,2,2), col3=c(3,3,3,3))
v <- c(1,2,3)
Run Code Online (Sandbox Code Playgroud)
对于data.frame,我会这样做
dt.new <- sapply(1:ncol(dt), function(i) dt[, i] * vec[i])
Run Code Online (Sandbox Code Playgroud)
但它对data.table不起作用.我试过了
cols <- c("col1", "col2", "col3")
dt.new <- dt[, (cols):= lapply(.SD, function(i) dt[[i]]*v[i]), .SDcols = cols]
Run Code Online (Sandbox Code Playgroud)
它也不起作用.我怎样才能做到这一点?