Неожиданный NULL при конкатенации 2 строк с использованием cat () - PullRequest
0 голосов
/ 08 мая 2018
t1 <- c('064359208644', '108595042227', '115705579765', '139254098290', '163646243244')
t2 <- c('064359208644', '139254098290', '163646243244')

missing_elem <- as.character(setdiff(t1, t2))
missing_elem

if(length(missing_elem) != 0){
  ss <- cat("Missing ids:", missing_elem)
}else{
  ss <- "There are no missing ids"
}

ss

Когда я печатаю вывод ss здесь, он показывает NULL, но если t1 и t2 одинаковы, а length(missing_elem) равен 0, тогда ss правильно установлен на "Нет пропущенных идентификаторов" и показывает соответственно. Есть идеи, почему это может произойти?

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Функция cat не возвращает сцепленные строки, а печатает на стандартный вывод и возвращает NULL (поэтому значение ss равно NULL). Вы, вероятно, хотите использовать paste:

if(length(missing_elem) != 0){
  ss <- paste("Missing ids:", paste(missing_elem, collapse = ', '))
}else{
  ss <- "There are no missing ids"
}

> ss
[1] "Missing ids: 108595042227, 115705579765"
0 голосов
/ 08 мая 2018

Если вы хотите просто вернуть персонажа, просто используйте paste вместо cat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...