2
我想获取字符串中每个字母的字母表中的相对位置。为了证明事情不正常:将字母转换为字母表中的相对位置(R)
which(letters %in% unlist(strsplit("acba", split="")))
结果:
#[1] 1 2 3
我正在寻找一个代码片段返回:
#[1] 1 3 2 1
建议?
我想获取字符串中每个字母的字母表中的相对位置。为了证明事情不正常:将字母转换为字母表中的相对位置(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
后,我们就可以match
与letters
得到数字索引。
match(unlist(strsplit("acba", split="")), letters)
#[1] 1 3 2 1
在OP的代码,当我们使用%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
逻辑输出正如我们可以从输出理解,只有在letters
匹配与所述第一3种元素输出为unlist
。因此,与which
包装会给即1该序列的只有数字指标,2,3,但是,如果我们使用即
unlist(strsplit("acba", split="")) %in% letters
#[1] TRUE TRUE TRUE TRUE
和反向然后用which
包,它会显示1,2,3, 4.