gpt4 book ai didi

r - 如何将 `chartr` 转换为 "-"(或转义范围)?

转载 作者:行者123 更新时间:2023-12-04 11:17:16 25 4
gpt4 key购买 nike

在 R 中,可以使用 chartr 将字符从一个字符更改为另一个字符,例如:

chartr("aor","u ^","Stackoverflow")
[1] "Stuck ve^fl w"

模式可以是范围(例如 chartr("a-hwo","0-9","Stackoverflow")),但长度需要匹配。

但是如何替换"-"呢?

> chartr("ab-;","1234","aaa bbb ccc --- ;")
Error in chartr("ab-;", "1234", "aaa bbb ccc --- ;") :
decreasing range specification ('b-;')

> chartr(";-ab","4312","aaa bbb ccc --- ;")
Error in chartr(";-ab", "4312", "aaa bbb ccc --- ;") :
'old' is longer than 'new'

> chartr("ab\-;","1234","aaa bbb ccc --- ;")
Error: '\-' is an unrecognized escape in character string starting ""ab\-"

> chartr("ab--;","1234","aaa bbb ccc --- ;")
Error in chartr("ab--;", "1234", "aaa bbb ccc --- ;") :
decreasing range specification ('b--')

我找到了一个解决方法——将 char 放在开头或结尾:

> chartr("ab;-","1243","aaa bbb ccc --- ;")
[1] "111 222 ccc 333 4"

但我使用它来随机替换字符,所以在我的模式中 "-" 可以在任何地方:

chartr(
old = "-!\"#$%&'()*+,./:;<=>?@[\\]^_`{|}~ "
,new = "-!\"#$%&'()*+,./:;<=>?@[\\]^_`{|}~ " %>% strsplit("") %>% .[[1]] %>% sample %>% paste(collapse="")
, x = "x@&*#--s"
) # this randomly is ok or throw error (about length or decreasing range)

有没有办法关闭范围/转义范围字符等?

最佳答案

- 的 unicode 代码点低于 a,因此错误说明

decreasing range specification ('b--')

因此,如果使用范围,则需要将其放在a 之前

没有范围:

chartr("-;ab","1234","aaa bbb ccc --- ;")
# [1] "333 444 ccc 111 2"

您随后可以使用 - 来表示一个范围(保持新旧长度匹配

`chartr("-a-c;","12b34","aaa bbb ccc --- ;")
# [1] "222 bbb 333 111 4"

关于r - 如何将 `chartr` 转换为 "-"(或转义范围)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42013203/

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