Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在数据帧或矩阵中按不同的行进行子集划分?_R_Matrix_Filter_Dataframe_Subset - Fatal编程技术网

R 如何在数据帧或矩阵中按不同的行进行子集划分?

R 如何在数据帧或矩阵中按不同的行进行子集划分?,r,matrix,filter,dataframe,subset,R,Matrix,Filter,Dataframe,Subset,假设我有以下矩阵: matrix(c(1,1,2,1,2,3,2,1,3,2,2,1),ncol=3) 结果: [,1] [,2] [,3] [1,] 1 2 3 [2,] 1 3 2 [3,] 2 2 2 [4,] 1 1 1 如何根据每行是否有重复值筛选/子集此矩阵?例如,在本例中,我只希望保留第1行和第2行 任何想法都将不胜感激 indx这里是我的方法,它使用anyDuplicated函数,应该更快一些

假设我有以下矩阵:

matrix(c(1,1,2,1,2,3,2,1,3,2,2,1),ncol=3)
结果:

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    3    2
[3,]    2    2    2
[4,]    1    1    1
如何根据每行是否有重复值筛选/子集此矩阵?例如,在本例中,我只希望保留第1行和第2行


任何想法都将不胜感激

indx这里是我的方法,它使用
anyDuplicated
函数,应该更快一些

indx <- apply(m, 1, function(x) !any(duplicated(x)))
m[indx, ]
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    1    3    2
mat[!apply(mat, 1, anyDuplicated), ]
[,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    3    2
尝试以下方法:(我怀疑这比任何
应用
方法都要快)


是的,1米行0.03秒,这里是4列矩阵。令人印象深刻。向量化函数,如
行和
==
每次都会执行beat`apply/循环。刚刚意识到这会在一行中有
c(1,2,1)
的地方返回一个正值。这太棒了!我知道有一个更快的机会way@thelatemail:是的。这就是它的初衷。这就是我对请求的理解,但是更改测试可能会使它返回一组不同的行。第二种方法很有趣,谢谢分享!
mat[!apply(mat, 1, anyDuplicated), ]
[,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    3    2
 mat[ rowSums(mat == mat[,1])!=ncol(mat) , ]
# ---with your object---
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    3    2