使用for循环在数据框中创建变量

时间:2018-11-10 17:16:42

标签: r loops dataframe transform

我有一个主数据帧(mydata)和两个辅助数据帧(df1df2),如下所示:

x <- c(1, 2, 3, 4, 5)
y <- c(5, 4, 3, 2, 1)
mydata <- data.frame(x)
df1 <- data.frame(y)
df2 <- data.frame(y)
df2$y <- y+1 #This way, the columns in the df have the same name but different values.

我想基于mydatadf1中的变量的公式在df2中创建新列,如下所示:

mydata$new1 <- mydata$x*df1$y
mydata$new2 <- mydata$x*df2$y

有没有办法可以通过for循环做到这一点?这就是我的想法:

for (i in 2) {
  mydata$paste0("new", i) <- mydata$x*dfpaste0(i)$y
}

2 个答案:

答案 0 :(得分:1)

类似的东西:

for (i in 1:2) {

  mydata[[as.symbol(paste0('new', i))]] <- mydata$x*get(paste0("df", i))$y

}

答案 1 :(得分:0)

我们还可以使用mget来获取list中的所有对象值,并与相关的vector

相乘
mydata[paste0("new", 1:2)] <- mydata$x * data.frame(mget(paste0("df", 1:2)))