R lappy的函数使用和输出

R lappy的函数使用和输出,r,R,我正在尝试使用lappy lapply(1:3, function(i) print(i)) # [1] 1 # [1] 2 # [1] 3 # [[1]] # [1] 1 # [[2]] # [1] 2 # [[3]] # [1] 3 我理解lappy应该能够对1:3 但是为什么输出看起来像这样 此外,当我使用unlist时,我得到如下输出 unlist(lapply(1:3, function(i) print(i))) # [1] 1 # [1] 2 # [1] 3 # [1] 1

我正在尝试使用
lappy

lapply(1:3, function(i) print(i))
# [1] 1
# [1] 2
# [1] 3
# [[1]]
# [1] 1

# [[2]]
# [1] 2

# [[3]]
# [1] 3
我理解
lappy
应该能够对
1:3
但是为什么输出看起来像这样

此外,当我使用
unlist
时,我得到如下输出

unlist(lapply(1:3, function(i) print(i)))
# [1] 1
# [1] 2
# [1] 3
# [1] 1 2 3

Lappy函数的描述如下:

“lappy返回一个与X长度相同的列表,其中的每个元素都是将FUN应用于X的相应元素的结果。”

你的例子是:

lapply(1:3, function(x) print(x))
打印对象x并返回长度为3的列表

str(lapply(1:3, function(x) print(x)))
# [1] 1
# [1] 2
# [1] 3
# List of 3
# $ : int 1
# $ : int 2
# $ : int 3
如评论中所述,有几种方法可以避免这种情况:

1) 使用隐形

lapply(1:3, function(x) invisible(x))
# [[1]]
# [1] 1

# [[2]]
# [1] 2

# [[3]]
# [1] 3

unlist(lapply(1:3, function(x) invisible(x)))
# [1] 1 2 3
2) 没有在函数内部显式打印

unlist(lapply(1:3, function(x) x))
# [1] 1 2 3
3) 将列表辅助到对象:

l1 <- lapply(1:3, function(x) print(x))
unlist(l1)
# [1] 1 2 3

l1是的,得到打印输出,然后隐式打印返回的对象。如果将输出保存在对象中,则不会看到第二部分<代码>l请不要使用图像来表示代码。