我有一个数据框,其变量标记为var1-var38,我试图将var1 * var20-38相乘,并将这些新变量添加到现有数据框中。我的问题是我可以用var20创建一个字符串,但它不是指数据框中的var20。我的代码如下:
inter.data <- read.csv("interactions.csv", header = T, sep = ",")
a <- 20
while(a <= 38) {
name <- paste("var", a, sep = "")
inter.data[paste("var1*", name, sep="")] <- NA
inter.data$var1*name <- (inter.data$var1)*(inter.data$name)
a <- a+1
}
我试过了
inter.data <- read.csv("interactions.csv", header = T, sep = ",")
a <- 20
attach(inter.data)
while(a <= 38) {
name <- paste("var", a, sep = "")
inter.data[paste("var1*", name, sep="")] <- NA
inter.data$var1*name <- (var1)*(name)
a <- a+1
}
以及
答案 0 :(得分:2)
我认为你不需要for循环。您可以按如下方式添加要创建的列。在此示例中,我们有一个包含四列的数据框,我们要添加列var1*var3
和var1* var4
df = data.frame(var1=c(2,2,2),var2=c(1,2,3),var3=c(4,5,6),var4=c(7,8,9))
new_df <- df[,3:4] * df[,"var1"]
colnames(new_df) = paste0("var1*",colnames(new_df))
cbind(df,new_df)
输出:
var1 var2 var3 var4 var1*var3 var1*var4
1 2 1 4 7 8 14
2 2 2 5 8 10 16
3 2 3 6 9 12 18
希望这有帮助!