R语言if语句中paste()函数输出异常:第一个无输出第二个正常
为什么R的if语句里只有最后一个paste()有输出?
这是R的默认行为导致的:
- 当你在代码块(比如
if里的大括号{})里写多个表达式时,R只会返回最后一个表达式的结果,而且只有当这个结果没被赋值给变量时,才会自动打印到控制台。 - 前面的
paste()确实执行了,但它们的结果既没被返回,也没被显式打印,所以你看不到输出。
解决办法
方法1:用print()显式打印每个paste()结果
把每个paste()都用print()包裹,强制输出:
x <- 1 y <- 2 if(x < y){ print("test print") print(paste("Test paste...x is:", x)) print(paste("Y is:", y)) }
运行后会依次输出所有内容。
方法2:把多个paste()结果放到向量中返回
如果不想用多个print(),可以把所有paste()的结果合并成一个向量,让代码块返回这个向量,这样所有结果都会被打印:
x=1 y=2 if(x<y){ c( paste("Test paste, x is :", x), paste("2nd test paste, y is:", y) ) }
运行后会输出两个字符串组成的向量。
方法3:用cat()或message()输出
如果是要输出信息,更推荐用cat()或message(),它们可以直接输出文本,和paste()配合使用更灵活:
x <- 1 y <- 2 if(x < y){ message("test print") message(paste("Test paste...x is:", x)) cat(paste("Y is:", y), "\n") # cat需要手动加换行符\n }
内容的提问来源于stack exchange,提问作者Brian Holt
相关产品推荐
相关产品推荐

