是否有类似于MATLAB的函数';s是R的成员吗?
如果我想要一个逻辑数组和数组元素是集合数组成员的位置索引,R中是否有一个函数可以给出与MATLAB的是否有类似于MATLAB的函数';s是R的成员吗?,r,matlab,function,R,Matlab,Function,如果我想要一个逻辑数组和数组元素是集合数组成员的位置索引,R中是否有一个函数可以给出与MATLAB的ismember()类似的输出 Matlab代码: A = [5 3 4 2]; B = [2 4 4 4 6 8]; [la loc] = ismember(A,B) A = [5 3 4 2]; B = [2 4 4 4 6 8]; [la,loc] = ismember(A,B); 输出: la = 1x4 logical array 0 0 1 1 loc
ismember()
类似的输出
Matlab代码:
A = [5 3 4 2];
B = [2 4 4 4 6 8];
[la loc] = ismember(A,B)
A = [5 3 4 2];
B = [2 4 4 4 6 8];
[la,loc] = ismember(A,B);
输出:
la = 1x4 logical array
0 0 1 1
loc =
0 0 2 1
out
[1,] 0 0
[2,] 0 0
[3,] 2 1
[4,] 1 1
现在,为了在R中获得类似的输出,我使用以下方法:
ismember <- function(A,B){
out <- match(A,B)
out <- cbind(out,(A %in% B)*1)
out[is.na(out)] <- 0
}
ismember(A,B)
Matlab函数ismember可以转换为R:
is.element
%in%
ismember(A,B) ---> is.element(A, B)
ismember(A,B) ---> A %in% B
如果要包括索引,可以使用:
总之,您的Matlab代码:
A = [5 3 4 2];
B = [2 4 4 4 6 8];
[la loc] = ismember(A,B)
A = [5 3 4 2];
B = [2 4 4 4 6 8];
[la,loc] = ismember(A,B);
基本上可以翻译为:
A <- c(5,3,4,2)
B <- c(2,4,4,4,6,8)
la <- is.element(A, B)
loc <- match(A, B, nomatch = 0)
A请更详细地说明预期输出是什么它可以这样写为一行:cbind(A%in%B,match(A,B,nomatch=0))
is.element
res <- cbind.data.frame(la = is.element(A, B), loc = match(A, B, nomatch = 0))
print(res$la)
[1] FALSE FALSE TRUE TRUE
print(res$loc)
[1] 0 0 2 1