将选定列乘以给定向量

mic*_*iak 2 r dataframe

一段时间以来,我一直在 R 中的一项任务上苦苦挣扎,这似乎很容易。

假设这是我的示例数据:

df <- data.frame(a=c(2,2,7),b=c(1,4,3),c=c(9,5,3))
v <- c(1,2,3)
Run Code Online (Sandbox Code Playgroud)

现在我想将每一列乘以相应的向量元素,例如第一列乘以v[1],第二列乘以v[2]等等。

预期输出:

  a b  c
1 2 2 27
2 2 8 15
3 7 6  9
Run Code Online (Sandbox Code Playgroud)

目标数据要大得多,由整数和浮点数组成。先感谢您!

小智 8

您可以使用sweep

sweep(df, 2, v, FUN="*")
Run Code Online (Sandbox Code Playgroud)

第二个选项是mapply

mapply(`*`, df, v)
Run Code Online (Sandbox Code Playgroud)

或者通过转置:

t(t(df)*v)
Run Code Online (Sandbox Code Playgroud)