我有一个包含许多NAs
的数据集。我想创建一个值为variable1
的新变量。如果variable1
为NA,则使用variable2
代替。如果variable2
也是NA
,请使用variable3
等。我已经创建了一个函数来执行此操作,但它不能按预期工作。
best_variable <- function(var_best1,var_best2,var_best3){
if(!is.na(var_best1)) {return(var_best1)}
if(is.na(var_best1) & !is.na(var_best2)) {return(var_best2)}
if(is.na(var_best1) & is.na(var_best2) & !is.na(var_best3)) {return(var_best3)}
if(is.na(var_best1) & is.na(var_best2) & is.na(var_best3)) {return(NA)}
}
请参阅mtcars数据集的示例。
test <- head(mtcars)
test$vs[3:5] <- NA; test$am[test$am == 1] <- NA
test$new_var <- best_variable(test$vs,
test$am,
test$gear)
Not the expected result as new_var[3] should be 4, as test$gear[3] is 4.
test$new_var <- lapply(mtcars[,.(vs,am,gear)], best_variable) # error
best_variable(test$vs[3],
test$am[3],
test$gear[3]) # Gets the right result
我在这里缺少什么?为什么我的函数在应用于整个数据集时不起作用?
答案 0 :(得分:1)
export * from './Help/HelpMode';