将具有多个列的特定列乘以R中的数据框

时间:2018-02-04 21:27:09

标签: r apply lapply

我是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与其他列相乘(这里只是ab但我有30-40。)

目前我已经编写了一个for循环,它一次在列上进行乘法运算。我需要帮助来对此进行矢量化并同时进行计算。

3 个答案:

答案 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 }
 )