Функция, которая запускается только тогда, когда в матрицах есть NAs

#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