gpt4 book ai didi

r - 使用 R 创建乘法交互变量

转载 作者:行者123 更新时间:2023-12-02 15:28:03 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来计算我指定的变量的所有乘法交互作用。请参阅下面的代码以了解我正在尝试做什么。

mul <- function(data, vars)
{
for(ii in vars)
{
for(jj in vars[ii : length(vars)])
{
data[, paste(ii, jj, sep = "mul")] <-
data[, which(colnames(data) %in% ii)]*data[, which(colnames(data) %in% jj)]
}

}
test
}

由于我是 R 的业​​余爱好者,一些 R 黑带编码员可以帮助我解决这个问题。

作为数据示例,我希望下面的代码最终能正常工作:

data(iris)
x <- names(iris)[1:4]
mul(iris, x)

并在我的 iris data.frame 中为我提供 4C2 (6) 个附加变量,其中包含所有乘法变量。最后,我需要为具有 70K obs 和 ~100 个变量的数据框执行此操作。提前致谢!

最佳答案

完全避免循环,使用combn:

data(iris)
x <- names(iris)[1:4]
combn(x,2,FUN=function(x) iris[,x[1]] * iris[,x[2]] )
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] 17.85 7.14 1.02 4.90 0.70 0.28
#[2,] 14.70 6.86 0.98 4.20 0.60 0.28
#[3,] 15.04 6.11 0.94 4.16 0.64 0.26
#[4,] 14.26 6.90 0.92 4.65 0.62 0.30
# etc etc

如果你想同时设置名字,做:

iris[combn(x,2,FUN=paste0,collapse=".by.")] <- 
combn(x,2,FUN=function(x) iris[,x[1]] * iris[,x[2]] )

关于r - 使用 R 创建乘法交互变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29382431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com