Подтвердить что ты не робот

Остановитесь от печати до консоли

Когда я использую 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
4b9b3361

Ответ 1

Используйте invisible, например:

invisible(FUN("hello"))
hello 1
hello 2
hello 3

Вы можете обернуть его вокруг вызова lapply в функции, чтобы сделать его более аккуратным.

Ответ 2

Используйте l_ply из plyr:

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