创建一个只读取2列矩阵的函数

时间:2017-10-14 10:34:15

标签: r

所以我构建了自己的函数来从矩阵中删除缺失的值:

removeMiss <- function(data) {
  removed <<- data[complete.cases(data), ]
  return(mat_NA_removed)
}

但我想调整该函数仅适用于2列矩阵

1 个答案:

答案 0 :(得分:0)

以下内容并不完美,但可以满足您的需求 首先,一些测试数据,因为您还没有提供数据集。其中一个矩阵有2列,另一个有3列。

set.seed(7201)
mat1 <- 1:24
mat1[sample(24, 5)] <- NA
mat2 <- mat1
dim(mat1) <- c(12, 2)
dim(mat2) <- c(8, 3)

现在,代码。

removeMiss <- function(data) {
    dataname <- deparse(substitute(data))
    if(!inherits(data, "matrix"))
        stop(paste(sQuote(dataname), "is not an object of class 'matrix'"))
    if(ncol(data) == 2){
        data <- data[complete.cases(data), ]
    } else {
        warning(paste("Matrix", sQuote(dataname), "does not have 2 columns"))
    }
    data
}

removeMiss(mat1)
removeMiss(mat2)

注意:

  1. 如果对象data不属于matrix类,则该函数会发出错误;
  2. 如果矩阵data没有恰好有2列,则会发出警告。
  3. 如果data没有2列,则不会更改,这意味着,如果有NA个值,则将被删除。