我想使用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()
只打印列表中的每件事一次?
答案 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