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

时间:2016-03-15 11:24:41

标签: r

我想在字符串中的每个字母的字母表中获得相对位置。为了证明一些不正常的事情:

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

结果:

#[1] 1 2 3

我正在寻找返回的代码段:

#[1] 1 3 2 1

连连呢?

1 个答案:

答案 0 :(得分:5)

如果我们需要用数字替换字符串元素,可以使用//*[@id='referral-or-navinet-reference-number']/text()

chartr

或者在执行chartr('abc', '123', 'acba') #[1] "1321" 之后,我们可以strsplit/unlist使用match获取数字索引。

letters

在OP的代码中,当我们使用match(unlist(strsplit("acba", split="")), letters) #[1] 1 3 2 1 时,它给出了一个逻辑输出,即

%in%

正如我们从输出中可以理解的那样,只有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个元素与letters输出匹配。所以用unlist包装将只给出该序列的数字索引,即1,2,3。但是,如果我们使用反向,即

which

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