lapply的函数用法和输出

时间:2014-01-12 17:50:03

标签: r

我正在尝试使用lapply

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

# [[2]]
# [1] 2

# [[3]]
# [1] 3

我了解lapply应该能够针对print (i)中的每个元素i执行1:3 但为什么输出看起来像这样。

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

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

1 个答案:

答案 0 :(得分:1)

lapply函数的描述如下:

“lapply返回一个与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