如何根据r中的特定值选择所有列的特定行?

时间:2017-05-18 01:13:37

标签: r

C1 C2 C3 C4
 2  3  4  5
 3  3  3  3 
 4  5  6  6
 4  4 6   3
 3  3  3  3
34 4   4 45  
3   3  3  3

我想选择只包含" 3值"的enitre行。 。我使用了x< - dataset(数据集,列[,C1:C4] == 3)

但它在我的整个数据集中无法正常工作。有没有比这更好的代码? 感谢

2 个答案:

答案 0 :(得分:0)

可能有一种更优雅的方式,但这可以完成这项工作:

dataset = matrix(1:16, ncol = 4)
dataset[2,] = rep(3, 4)
dataset[apply(dataset, 1, function(row) all(row == 3)),]

答案 1 :(得分:0)

这是一种快速的单行生锈方法,但适用于多行,并且可以调整为在函数内部具有参数(或多个参数)。 这是一个例子:

A
         [,1]     [,2]     [,3]     [,4]     [,5]
[1,] 3.000000 3.000000 3.000000 3.000000 3.000000
[2,] 9.471191 9.471191 9.471191 9.471191 9.471191
[3,] 3.000000 3.000000 3.000000 3.000000 3.000000
[4,] 6.469733 6.469733 6.469733 6.469733 6.469733
[5,] 8.040697 8.040697 8.040697 8.040697 8.040697

A[unique(which(A==3,arr.ind = T)[,1]),]
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    3    3    3    3
[2,]    3    3    3    3    3

存在一些问题,例如,您通过这样做丢失了行索引。我希望这是你正在寻找的东西。