将具有预定义值的列添加到数据框

cho*_*tom 4 r dplyr

我想在数据框中添加新列,并使用存储在另一个数据帧中的预定义值填充.什么是最好的方法?

很高兴:如果新变量出现在d2中,是否可以使代码动态化?

可重现代码的数据

d1 <- head(iris)                      # dataframe 1 ----------

var <- c("var1", "var2", "var3")
val <- c(5, 7, 1)
d2 <- as.data.frame(cbind(var, val))  # dataframe 2 ----------
Run Code Online (Sandbox Code Playgroud)

预期产出

第一个数据帧

在此输入图像描述

第二个数据帧

在此输入图像描述

期望的输出

在此输入图像描述

最好的祝福

Dav*_*urg 5

一种方法是(这适用于任意数量的vars)

d1[as.character(d2$var)] <- rep(d2$val, each = nrow(d1))
#   Sepal.Length Sepal.Width Petal.Length Petal.Width Species var1 var2 var3
# 1          5.1         3.5          1.4         0.2  setosa    5    7    1
# 2          4.9         3.0          1.4         0.2  setosa    5    7    1
# 3          4.7         3.2          1.3         0.2  setosa    5    7    1
# 4          4.6         3.1          1.5         0.2  setosa    5    7    1
# 5          5.0         3.6          1.4         0.2  setosa    5    7    1
# 6          5.4         3.9          1.7         0.4  setosa    5    7    1
Run Code Online (Sandbox Code Playgroud)