簡體   English   中英

將data.table的列乘以向量

[英]Multiply columns of a data.table by a vector

我有一個data.table,我想將列1中的所有值乘以向量的第一個元素,然后將列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)

對於data.frame我會做

dt.new <- sapply(1:ncol(dt), function(i) dt[, i] * vec[i])

但是對於data.table來說,它不是這樣工作的。 我試過了

cols <- c("col1", "col2", "col3")
dt.new <- dt[, (cols):= lapply(.SD, function(i) dt[[i]]*v[i]), .SDcols = cols]

它也不起作用。 我怎樣才能做到這一點?

Map是為此設計的:

dt[, Map("*", .SD, v)]
#   col1 col2 col3
#1:    1    4    9
#2:    1    4    9
#3:    1    4    9
#4:    1    4    9

也適用於data.frame:

DF <- as.data.frame(dt)
as.data.frame(Map("*", DF, v))
#  col1 col2 col3
#1    1    4    9
#2    1    4    9
#3    1    4    9
#4    1    4    9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM