gpt4 book ai didi

r - 向量化 R 中的双循环

转载 作者:行者123 更新时间:2023-12-04 10:51:50 28 4
gpt4 key购买 nike

我是 R 的新手,正在尝试对下面的代码进行矢量化处理。

执行此操作的更好方法是什么?非常感谢!

*

l_mat <- data.frame(matrix(ncol = 4, nrow = 4))
datax <- data.frame("var1"= c(1,1,1,1), "Var2" = c(2,2,2,2), "Var3"=c(3,3,3,3), "Var4"=c(4,4,4,4))
for (i in 1:4) {
for (j in 1:4) {
if (datax[i, 2] == datax[j, 2]) {
l_mat[i, j] <- 100
} else {
l_mat[i, j] <- 1
}
}
}

*

最佳答案

outer可以做得更好。当我们检查第二列中的所有值是否与自身相对时,使用 outer 创建逻辑表达式,将其转换为数字索引,然后将值替换为 1 或 100

out <- 1 + (outer(datax[,2], datax[,2], `==`))
out[] <- c(1, 100)[out]

或者在一行中

ifelse(outer(datax[,2], datax[,2], `==`), 100, 1)

或者使用 pmaxouter 的变体

do.call(pmax, list(outer(datax[,2], datax[,2], `==`) * 100, 1))

关于r - 向量化 R 中的双循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52501794/

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