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

很高兴:如果新变量出现在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 ----------


预期产量

第一个数据框



第二个数据框



所需的输出



最好的祝福

最佳答案

一种方法是(此方法适用于任何数量的var

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

08-24 12:15