2017-06-20 9 views
3

私は、数字でいっぱいの大きなデータフレームと、各列の制限付きの第2のデータフレーム(高い許容範囲と低い許容範囲)を持っています。私は上限と下限を使って、各列の範囲外にあるデータを見つける方法を考えています。私はforループでこれを行うことができますが、別の方法があるかどうか疑問に思っているので、面倒な解決策です(と私は確かに非効率です)。Rデータフレーム内のデータを検索するために使用

私は、その列の私たちの限界外にある値に基づいて失敗している行を知りたいでしょう例

#Create a data frame with values ranging from 0-10 
sampleData <- data.frame(replicate(9,sample(0:10,10, rep=TRUE))) 

    X1 X2 X3 X4 X5 X6 X7 X8 X9 
1 1 7 9 0 7 3 0 0 8 
2 4 8 3 4 9 6 3 2 3 
3 9 7 5 2 7 5 10 9 4 
4 2 6 2 1 3 9 4 3 9 
5 10 2 2 6 4 7 4 9 7 

#Have another data frame with our limits 
    X1 X2 X3 X4 X5 X6 X7 X8 X9 
1 1 7 3 4 7 3 0 0 3 
2 4 8 9 10 9 6 3 2 8 

については

。だから失敗は

Col 1: 3,5 
Col 2: 4,5 
Col 3: 4,5 
Col 4: 1,3,4 
Col 5: 4,5 
Col 6: 4,5 
Col 7: 3,4,5 
Col 8: 3,4,5 
Col 9: 4 

ありがとうございます!

答えて

2

塩基R mapplyを使用することができます。限界データフレームをlimitsとします。両方のデータフレームから列を並行して渡し、制限を拡張するインデックスを選択します。

mapply(function(x, y) which(x < y[1] | x > y[2]) , sampleData, limits) 


#$X1 
#[1] 3 5 

#$X2 
#[1] 4 5 

#$X3 
#[1] 4 5 

#$X4 
#[1] 1 3 4 

#$X5 
#[1] 4 5 

#$X6 
#[1] 4 5 

#$X7 
#[1] 3 4 5 

#$X8 
#[1] 3 4 5 

#$X9 
#[1] 4 
+0

47秒、私は私と同じように削除します。 @LeoP。 – LAP

+0

おっと。ハッピーズ: –

+0

よろしく!さよならループ!データフレームではなくマトリックスであることを実感していただき、ありがとうございます。 – Dippy

関連する問題