gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:28:02 25 4
gpt4 key购买 nike

我想获取字符串中每个字母在字母表中的相对位置。演示无法正常工作的东西:

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 的代码中,当我们使用 %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。

关于r - 将字母转换为它们在字母表中的相对位置 (R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36009924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com