我有一系列的 Dataframe ,我想使用管道在它们上运行几个函数。我创建了一个对象列表,如下所示(实际上大约有30个对象):
a <- 1:10
b <- 5:14
c <- 10:19
d <- c(NA, 4:12)
e <- 60:69
f <- 7:16
d1 <- tibble(a, b, c, d, e)
d2 <- tibble(a, b, c, e, f)
d_list <- c(d1, d2)
然后我尝试使用for
循环在 Dataframe 上管道函数:
for(d in d_list){
d %>%
select(c(1, 3:5)) %>%
na.omit()
}
如果我在for循环外的一个tibles上运行管道,它工作得很好。但是在循环中我得到一个错误:UseMethod(“select”)中的错误:没有适用于“select”的方法应用于类“c('integer','numeric')”的对象。我猜这意味着解析器不理解我想将函数应用于d_list中的 Dataframe ;但我不明白为什么
谢谢
彼得
2条答案
按热度按时间2wnc66cl1#
一旦你修复了@bretauv的答案中发现的问题(
list(d1, d2)
而不是c(d1, d2)
),然后尝试:lapply
接受一个列表作为输入,将指定的函数(带参数)应用到每个元素,并将结果作为列表返回。输出是一个列表:
c9x0cxw02#
您需要调用
list()
而不是c()
。c()
以一种奇怪的方式连接两个tibble
:如果使用
list()
,则可以在其上使用lapply()
: