R mapply中打印的奇怪行为

R mapply中打印的奇怪行为,r,printf,mapply,R,Printf,Mapply,当print()作为副作用包含在mapply()中时,我看到了一些意想不到的行为(无论如何对我来说) 例如,这与预期一样有效(是的,我知道这不是我们添加向量的方式): 这也是: mapply(function(i,j) paste(i, "plus", j, "equals", i+j), i=1:3, j=4:6) # returns [1] "1 plus 4 equals 5" "2 plus 5 equals 7" "3 plus 6 equals 9" 但这并不是: mapply(

print()
作为副作用包含在
mapply()
中时,我看到了一些意想不到的行为(无论如何对我来说)

例如,这与预期一样有效(是的,我知道这不是我们添加向量的方式):

这也是:

mapply(function(i,j) paste(i, "plus", j, "equals", i+j), i=1:3, j=4:6) 
# returns [1] "1 plus 4 equals 5" "2 plus 5 equals 7" "3 plus 6 equals 9"
但这并不是:

mapply(function(i,j) print(paste(i, "plus", j, "equals", i+j)), i=1:3, j=4:6)
# returns:
# [1] "1 plus 4 equals 5"
# [1] "2 plus 5 equals 7"
# [1] "3 plus 6 equals 9"
# [1] "1 plus 4 equals 5" "2 plus 5 equals 7" "3 plus 6 equals 9"

这是怎么回事?我已经有一段时间没有使用
mapply()
,所以这可能是一个无需思考的问题。。。我使用的是R版本3.4.0。

print
都会打印其参数并返回其值

p <- print("abc")
# [1] "abc"
p
# [2] "abc"

p在我看来是对的。前三个输出是打印每个
mapply
迭代的结果,最后一行是最终输出。
cat()
需要
cat(…,“\n”)
(显式行结束)
p <- print("abc")
# [1] "abc"
p
# [2] "abc"