乘以R中数据帧中的所有列

时间:2018-02-05 14:55:43

标签: r loops dataframe

我需要将数据框中的所有列相互相乘。作为一个例子,我需要实现以下目标:

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]
}
}
你可以帮帮我吗?谢谢你的帮助。

1 个答案:

答案 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