我有一个字符串 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
变成A
,3
变成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/