我是R.的新手。我的数据如下:
df <- data.frame(a=c(1, 1, 2, 3, 8, 9, 1, 3), b = c(5, 4, 3, 8, 6, 1, 0, 2), x = c(4, 3, 8, 9, 1, 8, 2, 3))
> df
a b x
1 1 5 4
2 1 4 3
3 2 3 8
4 3 8 9
5 8 6 1
6 9 1 8
7 1 0 2
8 3 2 3
我需要编写一个函数来将列x
与其他列相乘(这里只是a
,b
但我有30-40。)
目前我已经编写了一个for循环,它一次在列上进行乘法运算。我需要帮助来对此进行矢量化并同时进行计算。
答案 0 :(得分:1)
您可以在mutate
包裹<{1}}的帮助下完成此操作:
dplyr
答案 1 :(得分:1)
您可以简单地提取列并乘以矩阵。在这种情况下,“x”是您要使用的列。
multiply <- function(df, x) {
## extract the objetive column
df1 = df[, -x]
col = df[, x]
df1 * col
}
导致:
multiply(df, 3)
a b
1 4 20
2 3 12
3 16 24
4 27 72
5 8 6
6 72 8
7 2 0
8 9 6
答案 2 :(得分:-1)
或者申请
sapply( df , FUN= function(xxx ){
df$x * xxx }
)