我有一个字符矢量,其中使用了长名称,它由几个以点号形式由定界符连接的单词组成。
x <- c("Duschekia.fruticosa..Rupr...Pouzar",
"Betula.nana.L.",
"Salix.glauca.L.",
"Salix.jenisseensis..F..Schmidt..Flod.",
"Vaccinium.minus..Lodd...Worosch")
Run Code Online (Sandbox Code Playgroud)
名称的长度不同。但是,仅全名的前两个字很重要。
我的目标是获得最多7个符号的名称:前两个单词中包含3个初始符号,并在它们之间以“点”的形式分隔。
这些示例非常接近我的要求,但是我不知道如何将这些代码变体应用于我的案例。 R如何从数据框中的长列名称中删除字符,以及 如何在R中的输出数据框的“列名称”中附加名称?
我应该怎么做才能使出口名称看起来像这样?
x <- c("Dus.fru",
"Bet.nan",
"Sal.gla",
"Sal.jen",
"Vac.min")
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
您可以执行以下操作:
gsub("(\\w{1,3})[^\\.]*\\.(\\w{1,3}).*", "\\1.\\2", x)
# [1] "Dus.fru" "Bet.nan" "Sal.gla" "Sal.jen" "Vac.min"
Run Code Online (Sandbox Code Playgroud)
首先,我们最多匹配3个字符(\\w{1,3}),然后忽略不是点的任何内容[^\\.]*,匹配一个点\\.,然后再次匹配3个字符(\\w{1,3})。最后,那之后是什么.*。然后,我们仅使用方括号中的内容并将它们用点分隔\\1.\\2。