我有兩個類似的功能,我想應用於數據框架。每個函數使用數據框中的兩個向量並創建一個新的向量。但是,其中一個功能有時會返回錯誤。最終,我將在for循環中使用它,並計算每個函數給出的錯誤數(以顯示一個函數比另一個函數更好:-))。但是,我不知道我是否理解tryCatch
或try
以及足以使用管道。下面是一個函數失敗的例子。在R中使用tryCatch與Magrittr管道
library(tidyverse)
# Function that works
func_1 <- function(arg1, arg2) {
arg1 + arg2
}
# Function that errors
func_2 <- function(arg1, arg2) {
if(arg1 == 0) {error("Some Error")}
else arg1 * arg2
}
# Using the functions with pipes
cars <- mtcars %>%
filter(mpg > 18) %>%
select("vs", "carb") %>%
mutate(func1 = func_1(vs,carb)) %>%
mutate(func1 = func_2(vs, carb))
當我換了try
那麼新的矢量/列發生變異不會被計算。我無法使用管道工作tryCatch
。任何想法或替代方法表示讚賞。
當出現某種錯誤時,您期望的行爲是什麼? – Consistency
我將循環遍歷許多數據幀,所以每次函數都不起作用時,它會增加一個計數器:'func_2_errors = func_2_errors + 1'。如果兩個函數都起作用,那麼數據框應該有4列,如果一個函數失敗了,數據框應該有3列,如果兩者都失敗了,它應該只有原始2。 –