如何删除此for循环

程序源:

gf <- c(2,1,NA,4,5,2,3,NA)

dim(gf) <- c(5,3)

    n = nrow(gf)
    r = ncol(gf)

    for (i in 1:r) {
        col <- gf[,i]
        if (FALSE %in% (c(1:n) == col[col])) {
          cat("Error (i):",i,"\n")
          break
        }
    }
    gf

矩阵表示每轮一列的游戏文件。如果x在游戏中遇到y,则y在同一游戏中遇到x。测试对称矩阵中的冗余是否一致。

    Matrix:
      [,1] [,2] [,3]
[1,]    2    4    3
[2,]    1    5   NA
[3,]   NA   NA    1
[4,]    4    1   NA
[5,]    5    2   NA

如何消除for循环并拥有纯矩阵公式?

Sappley 回答:如何删除此for循环

不确定我是否完全理解您的问题,但是无论如何将您的代码转换为apply调用都差不多。

类似的事情将为您提供列名,如果可以,则返回TRUE,否则返回FALSE。

sapply(as.data.frame(gf),function(x) sum(c(1:nrow(gf)) != x[x],na.rm=TRUE) == 0)
,

如果您只想按列运行检查,则可以使用以下内容:

apply(gf,2,function(v) all(1:length(v) == v[v],na.rm = T))

使得符合条件的所有列都可以获取为

rs <- seq(r)[apply(gf,na.rm = T))]
本文链接:https://www.f2er.com/3166604.html

大家都在问