如何用map函数对列表中的tibble执行glimpse且无额外输出?
实现方法
要达到和for循环完全一致的效果,推荐使用purrr包中的walk()函数,它专门用于执行副作用操作(比如打印、输出这类无需返回值的任务),不会收集函数的返回结果:
library(tibble) library(purrr) df1 <- tibble(A = c(1,1,1), B = c(2,2,2)) df2 <- tibble(C = c(3,3,3), D = c(4,4,4)) dfs = list(df1, df2) # 仅输出glimpse的结果,无额外返回值 walk(dfs, glimpse)
原理说明
map()的设计目标是转换数据,它会收集每个函数调用的返回值并生成新列表。而glimpse()本身的返回值是原tibble(方便链式操作),因此用map()时会额外返回原数据的列表。walk()则专注于执行副作用,遍历列表元素执行指定函数后,不会返回任何结果,行为和你写的for循环完全一致。
备选方案
如果你坚持想用map(),可以用invisible()包裹调用,抑制返回值的显示:
invisible(map(dfs, glimpse))
内容的提问来源于stack exchange,提问作者Nika Tsereteli
相关产品推荐
相关产品推荐

