停止从打印到控制台的lapply

Tyl*_*ker 35 r

当我使用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")
Run Code Online (Sandbox Code Playgroud)

输出:

hello 1
hello 2
hello 3
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL
Run Code Online (Sandbox Code Playgroud)

期望的输出:

hello 1
hello 2
hello 3
Run Code Online (Sandbox Code Playgroud)

Jam*_*mes 46

使用invisible,例如:

invisible(FUN("hello"))
hello 1
hello 2
hello 3
Run Code Online (Sandbox Code Playgroud)

您也可以将它包裹lapply在函数中的调用周围以使其更整洁.

  • 它会暂时禁用返回对象的打印. (2认同)
  • 正如你想象的那样,它并没有'lapply`打印它的进展,它正如詹姆斯所说的那样打印返回的物体.这就是为什么你看不到"lapply"的选择.做`junk < - FUN("你好")`会有相同的视觉效果. (2认同)

had*_*ley 9

使用l_plyplyr:

library(plyr)
FUN <- function(x) {
    FUN2 <- function(z) message(z)
    l_ply(1:3, function(i) FUN2(paste(x, i)))
}
FUN("hello")
Run Code Online (Sandbox Code Playgroud)