将字母转换为它们在字母表中的相对位置(R)

将字母转换为它们在字母表中的相对位置(R),r,R,我想得到字符串中每个字母在字母表中的相对位置。要演示某些不正常工作的内容,请执行以下操作: which(letters %in% unlist(strsplit("acba", split=""))) 结果: #[1] 1 2 3 我正在查找返回的代码段: #[1] 1 3 2 1 建议 如果需要用数字替换字符串元素,可以使用chartr chartr('abc', '123', 'acba') #[1] "1321" 或者在执行strsplit/unlist之后,我们可以将与字母匹配以

我想得到字符串中每个字母在字母表中的相对位置。要演示某些不正常工作的内容,请执行以下操作:

which(letters %in% unlist(strsplit("acba", split="")))
结果:

#[1] 1 2 3
我正在查找返回的代码段:

#[1] 1 3 2 1

建议

如果需要用数字替换字符串元素,可以使用
chartr

chartr('abc', '123', 'acba')
#[1] "1321"
或者在执行
strsplit/unlist
之后,我们可以
字母匹配以获得数字索引

match(unlist(strsplit("acba", split="")), letters)
#[1] 1 3 2 1

在OP的代码中,当我们在%
中使用
%时,它会给出一个逻辑输出,即

letters %in% unlist(strsplit("acba", split=""))
#[1]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
我们可以从输出中了解到,只有
字母
中的前3个元素与
未列出
输出匹配。因此,用
包装,它将只给出该序列的数字索引,即1、2、3。但是,如果我们使用相反的方式,即

 unlist(strsplit("acba", split="")) %in% letters
 #[1] TRUE TRUE TRUE TRUE
然后用
包装,它将显示1、2、3、4