#r #matrix
Вопрос:
У меня есть две матрицы, одна из них имеет значение NA, и я хочу использовать функцию, которая запускается только в том случае, если NA
в данных присутствуют s, поэтому, если я запущу функцию, она должна работать только на df2
, а не df1
. Как бы я это сделал?
df1 <- matrix(1:4, nrow = 2, ncol = 2)
df2 <- matrix(1,2,3,NA, nrow = 2, ncol = 2)
Комментарии:
1. Вы можете создать функцию с
if(all(!is.na(obj))) yourfun(obj)
помощью или это должно быть наоборот.
Ответ №1:
Основываясь на комментарии выше, вот полный ответ (при условии, что я понимаю, к чему вы клоните). Функция настроена так, чтобы что-то делать с матрицей или нет, в зависимости от того, имеет ли она значения NA.
df1 <- matrix(1:4, nrow = 2, ncol = 2)
df2 <- matrix(c(1,2,3,NA), nrow = 2, ncol = 2)
myfunc <- function(m) {
ret <- m
if (all(!is.na(m))) {
print("This matrix has no NAs")
} else {
print("This matrix has NAs")
}
return(ret)
}
myfunc(df1)
# [1] "This matrix has no NAs"
# [,1] [,2]
# [1,] 1 3
# [2,] 2 4
myfunc(df2)
# [1] "This matrix has NAs"
# [,1] [,2]
# [1,] 1 3
# [2,] 2 NA