繁体   English   中英

R中的if else语句

[英]If else statement in R

所以我试图创建一个 if 语句,如果列数大于 1,那么它将对该矩阵进行多种形式的操作,如果矩阵少于或等于 1 列,则不会进行分析。 这是一些代码:

M <- NxN 矩阵

 if (ncol(M) > 1) {
      function1
      function2
      function3
      ...
 }
 else {}

但是,当我这样做时,我不断收到以下错误:

 Error in if (ncol(M) > 1) { : argument is of length zero

您的M对象可能不是矩阵。 我们将创建一个矩阵并查看您的代码输出,然后探索一种您可能不小心将其更改为向量的方法,然后我们将了解如何对矩阵进行子集化而不会错误地得出向量。

N <- 10
M <- matrix(sample(1:100, N*N, replace=TRUE), N, N)

colTest <- function(M) {
    if (ncol(M) > 1) {
        print("More than one column.")
    } else {
        print("One or fewer columns.")
    }
}
colTest(M)
M.vector <- M[, 2]
colTest(M.vector)
class(M.vector)
M.submatrix <- M[, 2, drop=FALSE]
colTest(M.submatrix)
class(M.submatrix)

输出:

[1] "More than one column."
Error in if (ncol(M) > 1) { : argument is of length zero
[1] "integer"
[1] "One or fewer columns."
[1] "matrix"

将来,当您遇到类似这样的问题时,请尝试strclass函数:它们将向您显示任何对象的结构和类。

在 R 中尝试 Ifelse 条件

ifelse(nrow(df) >0, df[nrow(df),4]<- "ok",df[1,1]<- "未找到记录")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM