gpt4 book ai didi

string - 如何根据字符串字符对向量进行子集化?

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

我有一个由“ZZZ1Z01Z0ZZ0”、“1001ZZ0Z00Z0”等条目组成的向量,我想根据以下条件对该向量进行子集化:

  1. 第三个字符是 Z
  2. 第三个和第七个字符是 Z
  3. 第三个和第七个字符是 Z,并且其他字符都不是 Z

我尝试使用 strsplit 和 grep,但我无法找到一种方法来根据字符在字符串上的位置来限制我的条件。有什么建议吗?

非常感谢!

最佳答案

您可以使用正则表达式来完成此操作(有关正则表达式的详细信息,请参阅 ?regexp)。

grep 返回匹配的位置,如果未找到匹配,则返回零长度向量。您可能想使用 grepl 来代替,因为它返回一个可用于子集的逻辑向量。

z <- c("ZZZ1Z01Z0ZZ0", "1001ZZ0Z00Z0")
# 3rd character is Z ("^" is start of string, "." is any character)
grep("^..Z", z)
# 3rd and 7th characters are Z
grep("^..Z...Z", z)
# 3rd and 7th characters are Z, no other characters are Z
# "[]" defines a "character class" and "^" in a character class negates the match
# "{n}" repeats the preceding match n times, "+" repeats is one or more times
grep("^[^Z]{2}Z[^Z]{3}Z[^Z]+", z)

关于string - 如何根据字符串字符对向量进行子集化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245204/

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