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

avatar
John Huang
8 августа 2021 в 21:42
29
1
0

У меня есть две матрицы, одна из них имеет значение NA, и я хочу использовать функцию, которая запускается только в том случае, если в данных присутствуют NA, поэтому, если я запускаю функцию, она должна работать только на df2 а не df1. Как мне это сделать?

df1 <- matrix(1:4, nrow = 2, ncol = 2)
df2 <- matrix(1,2,3,NA, nrow = 2, ncol = 2)

Источник
akrun
8 августа 2021 в 21:44
2

Вы можете создать функцию с if(all(!is.na(obj))) yourfun(obj) или наоборот.

Ответы (1)

avatar
David J. Bosak
8 августа 2021 в 23:01
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