所以我构建了自己的函数来从矩阵中删除缺失的值:
removeMiss <- function(data) {
removed <<- data[complete.cases(data), ]
return(mat_NA_removed)
}
但我想调整该函数仅适用于2列矩阵
答案 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)
注意:
data
不属于matrix
类,则该函数会发出错误; data
没有恰好有2列,则会发出警告。如果data
没有2列,则不会更改,这意味着,如果有NA
个值,则不将被删除。