我是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
}
}
}
*
答案 0 :(得分:6)
最好用git log --stat
完成。当我们检查第二列中的所有值是否与其自身相对时,请使用outer
创建逻辑表达式,将其转换为数字索引,然后将其替换为1或100
outer
或单行
out <- 1 + (outer(datax[,2], datax[,2], `==`))
out[] <- c(1, 100)[out]
或者使用ifelse(outer(datax[,2], datax[,2], `==`), 100, 1)
和pmax
的变体形式
outer