使用 apply 而不是 R 中的两个 for 来优化算法

Optimization of an algorithm using apply inestead of two fors in R

我遇到了以下问题:

我想重组我的 table 来自:

df <- data.frame(A=c(1,0,1), B=c(1,0,1), C=c(0,1,1))

  A  B  C
x 1  1  0
y 0  0  1
z 1  1  1

进入一帧:

  AB  AC  BC
x  1   0   0
y  0   0   0
z  1   1   1

通过使用每列的连词。

我可以通过使用两个 for 函数来完成,但是在 "big data" 上确实很耗时,我正在寻找优化函数。我发现 apply 在这种情况下很有用,但我不知道在那种情况下如何使用它。

谁能给我一个提示,如何解决上述问题?

这将使用 lapply 和 dplyr 的组合。 它列出了列的乘积,然后将其绑定到单个数据框中。

library(dplyr)
lapply(1:(ncol(df)-1), function(n){
  out <- df[,n] * df 
  names(out)  <- paste0(names(df)[n] ,names(df))
  out %>% select(c((n+1):ncol(df)))
}) %>% bind_cols()