R:which()函数是如何工作的
我不知道是哪个函数。基本上,我认为它检查输入对象(例如向量)的哪个位置的逻辑条件为真。如文件所示:R:which()函数是如何工作的,r,R,我不知道是哪个函数。基本上,我认为它检查输入对象(例如向量)的哪个位置的逻辑条件为真。如文件所示: which(LETTERS == "R") [1] 18 换句话说,它遍历所有字母value并检查value==R。但这似乎是一个误解。如果我输入 a <- c("test","test2","test3","test4") b <- c("test","test3") which(a==b) [1] 1 我的问题有两个: 如何返回与字符向量b匹配的字符向量a的位置 which()
which(LETTERS == "R")
[1] 18
换句话说,它遍历所有字母value并检查value==R。但这似乎是一个误解。如果我输入
a <- c("test","test2","test3","test4")
b <- c("test","test3")
which(a==b)
[1] 1
我的问题有两个:
编辑:谢谢你的快速回复,你澄清了我的误解
=
将值1与1进行比较(a[1]==b[1]);(a[2]==b[2])…..
而非集合
对于设置操作,请使用%
使用a[which(在%b中为%a)]
获取[1]“test”和“test3”
which()返回真表达式的索引(!)而不是值
哪个(在%b中的%a)
将返回
[1] 1 3
发出奇怪警告信息的原因是R的回收
Warning message:
In a == b : longer object length is not a multiple of shorter object length
因此,当您将长度为4的向量与长度为2的向量进行逐值比较(使用
=
)时,R“循环”短向量。在第4和第2节中,它起作用了,你会得到这个问题的答案:(a1==b1,a2==b2,a3==b1,a4==b2)。在长度为4和3的情况下,您会收到一条警告消息,说明短向量不能乘以整数以获得长向量长度。==
将值1与1进行比较(a[1]==b[1]);(a[2]==b[2])…..
而非集合
对于设置操作,请使用%
使用a[which(在%b中为%a)]
获取[1]“test”和“test3”
which()返回真表达式的索引(!)而不是值
哪个(在%b中的%a)
将返回
[1] 1 3
发出奇怪警告信息的原因是R的回收
Warning message:
In a == b : longer object length is not a multiple of shorter object length
因此,当您将长度为4的向量与长度为2的向量进行逐值比较(使用
=
)时,R“循环”短向量。在第4和第2节中,它起作用了,你会得到这个问题的答案:(a1==b1,a2==b2,a3==b1,a4==b2)。在长度为4和3的情况下,您会收到一条警告消息,说明短向量不能乘以整数来获得长向量长度。您需要给哪个一个输入,告诉它b中a的哪些元素:
which(a%in%b)
[1] 1 3
which
基本上确定了逻辑向量中哪些元素是TRUE
。您需要给which
一个输入,告诉它b中a的哪些元素是:
which(a%in%b)
[1] 1 3
它本质上标识了逻辑向量中哪些元素是真的。匹配(a,b)
…谢谢!文档中说“匹配:一个整数向量,如果存在匹配,则给出表中第一个匹配的位置,否则为nomatch。”如果a在b中多次出现,它是返回每个索引/位置还是只返回第一个?顺便问一下-匹配(a,b)
与%b中的a%相同
请参见!文档中说“匹配:一个整数向量,如果存在匹配,则给出表中第一个匹配的位置,否则为nomatch。”如果a在b中多次出现,它是返回每个索引/位置还是只返回第一个?顺便问一下-匹配(a,b)
与%b中的a%相同
请参见?base::match
x%in%y
与match(x,y,nomatch=0L)>0L相同
回答得好,谢谢!回答得很好,谢谢!