我有一个功能,旨在对从具有许多手动输入字段的各种来源获得的数据进行操作。由于我不知道这些文件中使用的布局或命名约定会发生什么,我希望它“扫描”数据框以查找具有字符串“fix”、“name”或“agent”的列,并且将该列更改为名为“Firm”的新列,然后继续对该列的条目进行字符串清理,最后删除原始列。我已经让它与我已经拥有的一些 CSV 一起工作,但现在遇到了这个错误:只有字符串可以转换为符号。我已经检查了这个线程错误:只有字符串可以转换为符号,但无济于事。
这是目前的功能:
clean_firm_names2 <- function(df){
df <- df %>%
mutate(Firm := !!rlang::sym(grep(pattern = '(AGENT)|(NAME)|(FIX)',x = colnames(.), ignore.case = T, value = T)) %>%
str_replace_all(pattern = "(\\W)+"," ") %>%
...str manipulations...
str_squish()) %>%
dplyr::select(-(!!rlang::sym(grep(pattern = '(AGENT)|(NAME)|(FIX)',x = colnames(.), ignore.case = T, value = T))))
return(df)
}
我尝试在 grep() 函数周围使用 as.character() ,但这并没有解决问题。我查看了该函数要对其进行操作的 CSV,并且所有列名都是字符串。我使用vroom()读取 CSV ,就像我的其他 CSV 一样,效果很好,所有列名都出现了。我可以在 df 上执行其他dplyr功能,向我暗示 df 在其他方面表现正常。关于为什么该功能仅在我的某些 CSV 上阻塞但在其他 CSV 上按预期工作,我已经没有想法了。有没有人遇到过类似的问题或对可能导致此错误的原因有任何线索?这是我第一次使用 SO——如果这个问题不是很清楚,我很抱歉。我会根据需要尝试和编辑。
谢谢!