r - 在 R 中编写一个函数,根据字母的第一个实例选择字符串并替换该字符串

标签 r string function

我有一个包含多个变量的数据框,如下所示:

land_unit<-c("0.5ha", "hactares", "ha", "ha", "acre", "3ha", 
              "lima", "limas", "acre", "cunny", "6 cunnies")

我想编写一个函数来为我整理这些数据,因为我的数据框中有许多具有类似格式的变量。我希望该函数根据字符串中出现的第一个字母替换每个元素。例如,如果字符串中出现的第一个字母是“h”,我希望整个字符串替换为“ha”,如果“l”则替换“lima”,如果“a”则替换“acre”,如果“c”则替换“acre”卡尼”。

我对此进行了广泛的搜索,但找不到答案,但我知道必须有一个相对简单的解决方案。也许使用正则表达式?

任何帮助将不胜感激。

最佳答案

根据描述,这可能会有所帮助。我们使用 gsubfn 来匹配从字符串 (^) 开头开始的零个或多个非字母字符 ([^A-Za-z]*) ),后跟捕获为一组的单个字母 (([a-z])),后跟其他字符 (.*),并将捕获组替换为命名键/值列表

library(gsubfn)
gsubfn("^[^A-Za-z]*([a-z]).*", list(h = "ha", l="lima", a = "acre", c = "kani"), land_unit)
#[1] "ha"   "ha"   "ha"   "ha"   "acre" "ha"   "lima" "lima" "acre" "kani" "kani"

关于r - 在 R 中编写一个函数,根据字母的第一个实例选择字符串并替换该字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41457263/

相关文章:

r - R 中的日期格式

r - ggplot2 vs sm 包密度图输出(和统计分析)

Rstudio - 连接到 HDInsight Spark 集群 SparkR

r - 如何从 R 向量中的每个元素中删除最后 n 个字符

c++ - isspace 和 Replace() 的问题

c++ - 输出函数 C++ 的问题

javascript - JavaScript 中 "decorator function"和 "decorator design pattern"有什么区别?

r - 将列添加到 R 数据框中,该列是另一列中的字符串长度

c - C中字符串连接的代码太多

java - @FunctionalInterface 也实现了andThen?