R 如果我的函数没有';如果我不能处理所有对象,如何跳过这些对象?

R 如果我的函数没有';如果我不能处理所有对象,如何跳过这些对象?,r,dplyr,R,Dplyr,我正在尝试编写一个函数并将其应用于列表。在我的函数中有一个由其他人编写的函数。如果我把清单列得很简单,一切都会很好。但是如果我使用我所有的真实数据,就会有一些不好的对象,外部函数不起作用,我的整个函数也不会通过 我应该键入什么来表示“如果外部函数不起作用,跳过该对象并移动到列表中的下一个对象。”?有无NA无关紧要 我不知道如何编写一个可复制的示例来生成一个数据帧列表,这就是这个函数中发生的事情。我愿意接受任何帮助来改进这个问题 我的函数是这样的: do_this<- function(x)

我正在尝试编写一个函数并将其应用于列表。在我的函数中有一个由其他人编写的函数。如果我把清单列得很简单,一切都会很好。但是如果我使用我所有的真实数据,就会有一些不好的对象,外部函数不起作用,我的整个函数也不会通过

我应该键入什么来表示“如果外部函数不起作用,跳过该对象并移动到列表中的下一个对象。”?有无NA无关紧要

我不知道如何编写一个可复制的示例来生成一个数据帧列表,这就是这个函数中发生的事情。我愿意接受任何帮助来改进这个问题

我的函数是这样的:

do_this<- function(x){
  outside_function(x))%>%  #this returns a dataframe for each object
  filter()%>%
  select()%>%
  summarise_each(funs(mean(., na.rm = TRUE))) #by the end the df is down to one row
}
do_this%#这将为每个对象返回一个数据帧
过滤器()%>%
选择()%>%
总结每一行(funs(mean(,na.rm=TRUE))#最后df下降到一行
}
这就是我如何将函数应用于列表以生成最终数据帧的方法

df<-bind_rows(lapply(my_list, do_this))
df一个例子:

myfun <- function(x) {if (x == 1) {stop("bad")} else x}
只需将其包装在try中(只要您不需要更复杂的错误处理):


尽管您可能只想使包装函数更健壮,或者在导致内部函数失败的情况下返回
NULL
(或其他适当的值)。

查看帮助以了解
try
tryCatch
可能。是否
外部函数
会导致错误?或者返回
NA
outside_函数
在遇到它不喜欢的
x
时会导致错误。我这里的代码仍然会出错,并且当我尝试将它合并到我的代码中时,但是考虑在
lappy
中工作,而不仅仅是我的函数。嗯,这很有趣。对我来说很好
try
打印错误消息,但仍会继续。您确定您看到的不仅仅是打印错误吗?对对象
L
的赋值应该有效。如果没有
try
L
在函数调用失败后将不存在。你是对的,我只是看到了错误消息,但没有尝试打印
L
。它确实存在!我花了一段时间才完成最后一步,在那之前很难说。
lapply(1:4, myfun)  # stops from error
L <- lapply(1:4, function(x) try(myfun(x)))
Filter(function(x) !inherits(x, "try-error"), L)