如何抑制部分来自lapply()的输出?

时间:2019-06-02 20:10:48

标签: r

我想使用lapply()打印列表中所有的元素。下面的代码可以做到这一点,但是产生的输出却很奇怪。

N.seq <- c(1,2,3,4,5)
lapply(N.seq,print)

我从R得到的东西看起来像这样。

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4

[[5]]
[1] 5

如何让lapply()只打印列表中的每件事一次?

2 个答案:

答案 0 :(得分:1)

一个选项是invisible

invisible(lapply(N.seq, print))
#[1] 1
#[1] 2
#[1] 3
#[1] 4
#[1] 5

如果我们要将vector转换为list

as.list(N.seq)

答案 1 :(得分:1)

*apply总是返回某些内容,因此lapply将打印所有内容,然后为您提供一些输出。您想要的称为https://godbolt.org/z/ae_KPv,这是指函数影响其自身本地范围以外的事物。您可以将*apply函数包含在invisible()中以禁止输出,但是purrr包具有一个专门设计用于处理副作用的函数:

library(purrr)
walk(N.seq, print)

#### OUTPUT ####

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5