我有一个字符串 vector :

grid_loc <- c("B2", "B3", "B4", "C2", "C3", "C4", "D2", "D3", "D4")

如何重新编码这些字符串,以便新的 vector 如下所示:
c("A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3")

如您所见,我希望每个字母和数字字符串都减去“1”。 B变成A3变成2等。

在原始数据集中,没有包含字母A或数字1的字符串,因此弄清楚如何处理这种情况不是问题。

我尝试使用gsub()手动重新编码每个字符串,但是由于实际数据集的大小,这太麻烦了。

最佳答案

如果原始 vector 中没有'A'或'1',那么一种选择是使用gsubfn减去数字并将字母替换为前面的字母

library(gsubfn)
f1 <- function(x, y) paste0(LETTERS[match(x, LETTERS)-1], as.numeric(y) - 1)
gsubfn('([A-Z])([0-9]+)', f1, grid_loc)
#[1] "A1"  "A2"  "A3"  "B1"  "B2"  "B3"  "C1"  "C2"  "C3"  "A19"

数据
grid_loc <- c("B2", "B3", "B4", "C2", "C3", "C4", "D2", "D3", "D4", "B20")

关于r - 从多个字母和数字字符串中减去1个字母和数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49028617/

10-11 22:36
查看更多