在R中,我怎样才能看出字符向量的三个元素是否与长度为5的向量相同

dll*_*mn3 2 poker r vector elements

我有扑克手,我需要检查三种.有没有办法看看矢量中的3个元素是否相同,但另外2个元素是否不同?

例如:

hand <- c("Q","Q","6","5","Q")
Run Code Online (Sandbox Code Playgroud)

应该返回TRUE三种.

hand2 <- c("Q","Q","6","6","Q")
Run Code Online (Sandbox Code Playgroud)

......虽然是一个完整的房子,但不应该被认定为三种房子.

the*_*ail 6

使用table和一些逻辑检查应该到达那里:

tab <- table(hand)
#hand
#5 6 Q 
#1 1 3
any(tab==3) & (sum(tab==1)==2)
#[1] TRUE

tab <- table(hand2)
#hand2
#6 Q 
#2 3 
any(tab==3) & (sum(tab==1)==2)
#[1] FALSE
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为any将查看文件tab,检查是否有任何卡值重复3次.tab==1函数的一部分检查文件中的任何值tab是否等于1,返回TRUEFALSE表的每个部分.sum-ing TRUE/FALSE值相当于求和1/0值,所以如果你检查你有2其他卡的总和,你可以确定它们是不同的.

  • 还有`any(tab == 3)&(length(tab)== 3)` (3认同)
  • 本着与jbaums ans一样的精神; 进行第二次测试'!any(tab == 2)' (2认同)