r - 创建一个即使某些文件没有正确导入也能运行的函数
问题描述
我有一个导入多个文件的功能。如下图所示:
tucson_function<- function (x) {
df <- read.tucson(x)
final1<-as.data.frame(df)
final2<-rownames_to_column(final1, 'year')
site_ID <- sub('\\.rwl$', '', x)
final2<- cbind(final2, site_ID)
final3<-reshape2::melt(final2)
}
它read.tucson
来自一个包dplR
,用于导入 .rwl 扩展名的文件。然后我通过以下方式导入文件:
asia_data<-lapply(asia, tucson_function)
问题是tucson_function
文件夹中的多个文件失败。这很好,但在当前形式下,它会阻止其余文件上传(它会引发警告并停止函数)。我希望该功能“忽略”警告并丢弃失败的文件,并继续导入其余文件。
我怎么能这样做?
解决方案
我们可以使用possibly
frompurrr
或tryCatch
from base R
。使用,指定在失败possibly
时返回的值otherwise
library(purrr)
ptucson_function <- possibly(tucson_function, otherwise = NA)
map(asia, ptucson_function)
中base R
,我们可以使用tryCatch
lapply(asia, function(x) tryCatch(tucson_function(x), error=function(e) NA))
推荐阅读
- c++ - DXRSDK_v0.09.01 无法在 Visual Studio 2017 上运行
- php - 想要获取数组值
- javascript - D3 v4 重新渲染嵌套对象,`enter()` 和 `exit()` 出现问题
- javascript - Vuejs:event_id 未定义
- codesniffer - 如何配置 PHP CodeSniffer 以允许具有任何缩进的数组?
- sql-server - 根据实际值检查表格内容
- javascript - 单击按钮时,如何在发送我的 ajax 之前调用我的验证函数?
- python - Python - 如何使用 MIMEText 更改字体
- java - LocalDate(反)序列化适用于 JAX-RS 服务器,但不适用于 JAX-RX 客户端
- java - 为 _deploy.jar java_binary 提供了依赖项