r - 如何使用 tryCatch() 将 NA 添加到 data.frame?
问题描述
我正在创建一个对美国县执行协整的脚本。我正在尝试根据错误过滤我的数据。如果我正在执行的测试有一列全为零或全为 na 的数据,我会收到错误消息。当我的程序运行时,我有一个 tryCatch(),它基本上会跳过有该错误(或任何其他错误)的部分,并在出现错误时将数据导出为“NA”。虽然这不是一个永久的解决方案,但它目前是一种查看我正在分析的县有足够数据的方法。
在下面的代码片段中,我们有选择 k 值并将它们分配给向量的代码。
# k-value selector function
set_k_vals <- function(k_vals) {
kval_length = as.integer(length(k_vals))
for (i in 1:kval_length) {
if (k_vals[i] < 2) {
k_vals[i] = 2
}
}
return(k_vals)
}
# before lag selection function call
k_vals_vector <- c(K_val1, K_val2, K_val3, K_val4, K_val5)
# after lag selection function call
k_vals <- set_k_vals(k_vals_vector)
然后,我们对导出的数据帧进行了初始化。
# exported data frame
exported_df <- data.frame(matrix(ncol = 8, nrow = 0))
x <- c("Location", "Start Date", "End Date", "Test ID", "Test Type", "Test Statistic", "0.05 Critical Value", "P Value")
colnames(exported_df) <- x
在这里,我们有 trycatch() 错误处理函数。如果没有错误,则继续。如果出现错误,我们会告诉代码跳到下一个县,并将 NA 附加到数据帧中县的位置。
johansen_error_handling <- function(k_vals){
tryCatch(
{
jo_test = ca.jo(system1, type='trace', ecdet = 'const', K=k_vals[1])
message("Everything went smoothly.")
return(jo_test)
},
error=function(error_message) {
message("And below is the error message from R:")
message(error_message, "\n")
skip_to_next <<- TRUE
exported_df[nrow(exported_df) + 1,] = list(title,"NA","NA","NA","NA","NA","NA","NA")
return(exported_df)
}
)
在对所有县进行分析之后,我有这个循环对变量进行排序并将它们添加到数据框中。
for (i in 1:10) {exported_df[nrow(exported_df) + 1,] = list(title, start, end, test_ID[i], test_type[i], test_stat[i], crit_value[i], p_val[i])}
示例数据:
Location Start Date End Date Test ID Test Type Test Statistic 0.05 Critical Value P Value
Acadia-Louisiana-US 2020-02-15 2020-11-01 Air Temperature trace statistic 26.04672027 19.96 0.378952269
我的问题是exported_df 中没有显示任何NA 数据。我做错了什么吗?
注意:我对 R 还是很陌生,所以如果我的代码不是“r-like”,我深表歉意。
解决方案
推荐阅读
- python - pandas 从累积的多类别列中计算每日总数
- postgresql - PostgreSql 查询大表时的问题
- filter - 如何在logstash中使用聚合函数来计算“经过”时间字段之间的差异?
- vue.js - VueX:如何在一个循环中提交?
- python - 让用户输入 10 个数字,然后在 python 中求和
- vba - 使用选择基于实例更改 CATIA 用户定义属性
- validation - 如何验证文本字段的 0-9 位数字和颤动中的一个字符?
- react-native - React Navigation v.5 为深度链接配置正确的状态对象
- java - 尝试使用 0-10 之间的 10 个随机数生成 2 个向量
- php - 导入和发布产品后更新产品