使用cat()连接2个字符串时出现意外的NULL

时间:2018-05-08 17:34:57

标签: r

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正确设置为&#34;没有丢失的ID&# 34;并相应地显示。知道为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

如果您想重新获得一个角色,只需使用paste代替cat

答案 1 :(得分:2)

函数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"