我有一个主数据帧(mydata
)和两个辅助数据帧(df1
,df2
),如下所示:
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.
我想基于mydata
和df1
中的变量的公式在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
}
答案 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)))