R中的逻辑测试 - 只需要满足四个条件中的三个

时间:2017-09-07 11:51:05

标签: r

我有一个字符串的四个条件,但只有三个必须完成。

条件:  * 至少有一个大写字母  *至少一位数  *至少一封小写字母  *至少有一个标点符号

如何在R中将其写为if语句,如果正确则打印“TRUE”,否则打印“FALSE”?

1 个答案:

答案 0 :(得分:1)

示例输入

S1 <- "Aa1!"
S2 <- "eij20n."
S3 <- "ei20"

功能

myfun <- function(S) {
                     # digit       # uppercase        # lowercase       #punctuation
             sum(grepl("\\d", S), grepl("[A-Z]",S), grepl("[a-z]",S), grepl("[.!?]",S)) >= 3 
         }

myfun(S1)
# TRUE
myfun(S2)
# TRUE
myfun(S3)
# FALSE

功能较少的详细版本

myfun1 <- function(S) {
            pattern <- c("\\d", "[A-Z]", "[a-z]", "[.!?]")
            sum(sapply(pattern, function(x) grepl(x, S))) >= 3
          }