我创建了一个用户定义的函数,该函数将在文本中搜索某些值,然后返回不同的值。这对于每个单独的调用都很好,但是,当我尝试在Tidyverse中使用它时,使用mutate将不再起作用。我收到警告:
警告信息:
我猜想它与类型和格式有关,但不确定如何解决。
# create fake data
P1 = c("Unique Claims", "Unique Records", "Spend Today", "Spend Yesterday", "% Returned", "% Claimed")
P2 = as.tibble(P1)
#create function
assignFormat <- function (textValue = as.character()) {
if (grepl("Unique", textValue) > 0) {
numFormat = "Comma"
} else if (grepl("Spend", textValue) > 0) {
numFormat = "Currency"
} else if (grepl("%", textValue, ) > 0 ) {numFormat = "Percent"}
else numFormat = "Other"
return(numFormat)
}
#test function - works fine
assignFormat("% of CLaims")
assignFormat("Unique Records")
assignFormat("Total Spend")
#doesn't work
P3 = P2 %>%
mutate(y = assignFormat(value))
我尝试过的事情:
切换到grep
直接在突变中使用GREP-而是创建三个 vector
选项和帮助表示赞赏!
最佳答案
如果您使用dplyr
分组,那么许多字符串函数都可以按照rowwise
的预期工作
#does work
P3 = P2 %>%
rowwise() %>%
mutate(y = assignFormat(value)) %>%
ungroup()