我需要将数据框中的所有列相互相乘。作为一个例子,我需要实现以下目标:
mydata$C1_2<-mydata$sic1*mydata$sic2
但是我的所有列的值都是1到733(sic1,sic2,sic3,...,sic733)。
我已经尝试了以下但是它不起作用:
for(i in 1:733){
for(j in 1:733){
mydata$C[i]_[j]<-mydata$sic[i]*mydata$sic[j]
}
}
你可以帮帮我吗?谢谢你的帮助。
答案 0 :(得分:1)
尽管如果你真的想要你想要的东西,我觉得这可能有所帮助:
df <- data.frame(
a = 1:4
, b = 1:4
, c = 4:1
)
multiplyColumns <- function(name1, name2, df){
df[, name1] * df[, name2]
}
combinations <- expand.grid(names(df), names(df), stringsAsFactors = FALSE)
names4result <- paste(combinations[,1], combinations[,2], sep = "_")
result <- as.data.frame(mapply(multiplyColumns, combinations[,1], combinations[,2], MoreArgs = list(df = df)))
names(result) <- names4result
result