Вот базовое решение R, использующее ifelse()
, где пример игрушки дает, как показано ниже
# two distinct function
f1 <- function(x) x**2
f2 <- function(x) -sqrt(x)
# apply function to column B according to value in column A
df <- data.frame(A = c(T,T,F,T),B = 1:4)
df <- within(df, C <- ifelse(A,f1(B),f2(B)))
, такой что
> df
A B C
1 TRUE 1 1.000000
2 TRUE 2 4.000000
3 FALSE 3 -1.732051
4 TRUE 4 16.000000
РЕДАКТИРОВАТЬ с фрейм данных в вашем посте, может быть, вы можете попробовать код ниже
result <- apply(df, 1, function(v) {
if (v["parent_boolean"]) {
dp_parent(v["table_name"])
} else {
dp_child(v["table_name"],v["parent_table"])
}
})
df <- cbind(df,result)
## or
# add_column(df, result)