R multiply columns by values in second dataframe

dataframe, r

Solution

Your data:

df1 <- read.table(
  text = 
    "plot   grass moss   rock    other     stuff  
    a      4      0     0       text      3
    b      2      2     0       text      4
    c      10     0     0       text      0
    d      3      1     0       text      9",
  header = TRUE
)

df2 <- read.table(
  text = 
    "Cover  value
    grass   5
    moss    2
    rock    3",
  header           = TRUE,
  stringsAsFactors = FALSE
)

(Make sure that `Cover` is a character vector, not a factor, for this solution.)

A simple `for` loop does the trick:

df3 <- df1
for(i in seq_len(nrow(df2)))
{
  df3[, df2$Cover[i]] <- df2$value[i] * df1[, df2$Cover[i]]
}

Problem

I have two dataframes: df1 ``` plot grass moss rock other stuff a 4 0 0 text 3 b 2 2 3 text 4 c 10 0 0 text 0 d 3 1 0 text 9 ``` and df2 ``` Cover value grass 5 moss 2 rock 3 ``` I would like to multiply the values in df1 by the corresponding value in df2. The solution should be applicable for a large dataset. Result df3 ``` plot grass moss rock a 20 0 0 b 10 4 9 c 50 0 0 d 15 2 0 ```

Original source