使用 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()
我遇到了以下问题:
我想重组我的 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()