我想在字符串中的每个字母的字母表中获得相对位置。为了证明一些不正常的事情:
which(letters %in% unlist(strsplit("acba", split="")))
结果:
#[1] 1 2 3
我正在寻找返回的代码段:
#[1] 1 3 2 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。