测试字符串是否在字母的n个位置

时间:2018-07-16 11:21:32

标签: r

正如标题所示,我正在寻找一种优雅的方法来测试字符是否在字母表的前n个位置。

因此,对于字符向量,如下所示: names <- c("Brian", "Cormac", "Zachariah") 并使用n <- 6 它会返回: TRUE','TRUE', 'FALSE'

*我知道我可以使用substr(names,1,1) %in% c("A", "B", "C", "D", "E", "F"),但是我希望有一个更好的解决方案。

编辑:我在字母表中的位置是指第一个字母是否按字母顺序位于前n个字母中。因此,“ A”在前n = 1+中,“ B”在前n = 2 +中,“ Y”在前n = 25个字母中,依此类推。

2 个答案:

答案 0 :(得分:0)

PoGibas的评论似乎很优雅。下一步将其包装在一个函数中:

cht6_pog <- function(string) {
  x <- toupper(substring(string, 1, 1)) %in% LETTERS[1:6]
  names(x) <- string
  x
}

cht6_pog(names)
Brian    Cormac Zachariah 
 TRUE      TRUE     FALSE 

答案 1 :(得分:0)

这是我对您问题的回答。

# fun:    
check_char <- function(string, start_n, end_n, char_pattern)
{
  str_list <- strsplit(substr(string, start_n, end_n), "")
  out <- sapply(str_list, function(x) any(tolower(x) %in% tolower(char_pattern)))
  return(out)
}

# args:
str_vec <- c("Google", "Facebook", "Amazon")
str_n <- 1
end_n <- 4
char <- LETTERS[1:6]

# run:
out <- check_char(str_vec, str_n, end_n, char)
print(out)
# [1] FALSE  TRUE  TRUE