我创建了一个用户定义的函数,该函数将在文本中搜索某些值,然后返回不同的值。这对于每个单独的调用都很好,但是,当我尝试在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()

08-20 01:03