通过匹配命名数字来乘以 R 数据帧的行
Multiply rows of R dataframe by matching named numeric
如何有选择地将数据框中的一行乘以命名数字中的相应数字?
## Create DataFrame
d <- data.frame(a=c(1,1,2), b=c(2,2,1), c=c(3,0,1))
rownames(d) = c("X", "Y", "Z")
## Create Named Numeric
named_numeric = c(2,1,3)
names(named_numeric) = c("X", "Y", "Z")
named_numeric
在这种情况下,数据帧第一行中的所有值 ("X": 1,2,3) 将乘以命名数字 (2) 中 "X" 的值。第一行的结果将是 "X": 2,4,6。
expected_output = data.frame(a=c(2,1,6), b=c(4,2,3), c=c(6,0,3))
rownames(expected_output) = c("X", "Y", "Z")
我们可以做到
out <- d * named_numeric
identical(expected_output, out)
#[1] TRUE
如果 named_numeric
的名称与行名称不对齐,则重新排序其中一个并乘以
d * named_numeric[row.names(d)]
如何有选择地将数据框中的一行乘以命名数字中的相应数字?
## Create DataFrame
d <- data.frame(a=c(1,1,2), b=c(2,2,1), c=c(3,0,1))
rownames(d) = c("X", "Y", "Z")
## Create Named Numeric
named_numeric = c(2,1,3)
names(named_numeric) = c("X", "Y", "Z")
named_numeric
在这种情况下,数据帧第一行中的所有值 ("X": 1,2,3) 将乘以命名数字 (2) 中 "X" 的值。第一行的结果将是 "X": 2,4,6。
expected_output = data.frame(a=c(2,1,6), b=c(4,2,3), c=c(6,0,3))
rownames(expected_output) = c("X", "Y", "Z")
我们可以做到
out <- d * named_numeric
identical(expected_output, out)
#[1] TRUE
如果 named_numeric
的名称与行名称不对齐,则重新排序其中一个并乘以
d * named_numeric[row.names(d)]