我想利用快速的data. table::fcase()而不是使用derryr::case_when(),但我不知道如何将给定行的值保持为默认值(而不是固定值).
说你有
dt <- data.table(v1 = c("1","2", "3", NA))
使用dr.case_when()
dt %>%
mutate( v2 = case_when(is.na(v1) ~ "0",
TRUE ~ v1))
你得到了预期的结果
> dt %>%
+ mutate( v2 = case_when(is.na(v1) ~ "0",
+ TRUE ~ v1))
v1 v2
1: 1 1
2: 2 2
3: 3 3
4: <NA> 0
使用data.table的fcase()
dt[ , v2 := fcase(is.na(v1), "0",
default = v1)]
(或任何与该代码类似的代码),您会看到错误
> dt[ , v2 := fcase(is.na(v1), "0",
+ default = v1)]
Error in fcase(is.na(v1), "0", default = v1) :
Length of 'default' must be 1.
我相信因为v1
被视为完整的列v1
我该怎么修复它?