当我使用lapply
并打印到控制台时,它会打印不需要的[[i]]NULL
,但我希望将预期的消息打印到控制台。我已尝试suppressWarnings
和suppressMessages
,但这些并未删除不受欢迎的罪犯。我搜查了lapply
并且没有看到让它沉默的论据。这更美观,因为它不会干扰功能。只要用户可以根据需要关闭它,我就不会反对在控制台上进行替代打印。
这是一个示例函数,输出和我想要的内容:
示例功能:
FUN <- function(x) {
FUN2 <- function(z) message(z)
lapply(1:3, function(i) FUN2(paste(x, i)))
}
FUN("hello")
输出:
hello 1
hello 2
hello 3
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
期望输出:
hello 1
hello 2
hello 3
答案 0 :(得分:45)
使用invisible
,例如:
invisible(FUN("hello"))
hello 1
hello 2
hello 3
您也可以将其包裹在函数中的lapply
调用中,以使其更加整洁。
答案 1 :(得分:7)
使用plyr的l_ply
:
library(plyr)
FUN <- function(x) {
FUN2 <- function(z) message(z)
l_ply(1:3, function(i) FUN2(paste(x, i)))
}
FUN("hello")
答案 2 :(得分:0)
我发现那里的答案(invisible(capture.output())
更好地解决了我向控制台打印输出的问题,
Suppress output of stationarity test that is printed to screen。同样在测试的背景下,expect_output
非常有用。
答案 3 :(得分:0)
您可以使用普通的ol'for循环代替lapply()
:
FUN <- function(x) {
for (i in 1:3) {
message(paste0(x, i))
}
}
FUN("hello")