2016-10-10 6 views
-1

Data in RStudio Viewerこの行列の対応する列を見つける方法は?

私は今、この行列を得た、と私はmin列を検索し、定義したいと思います:

y = (0,0,0,0,1,0) 

(5列目が最小であるため)。

yを取得するにはどうすればよいですか?

+0

ようこそStackOverflow!あなたが試したことを教えてください。また、私たちがあなたを助けてくれるように[再生可能な例を提供する](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)私たちはあなたの例を再現するためにコピーしてRに貼り付けることができます。あなたはRで最小値、または最小値のインデックスを見つける方法を探しましたか? '?which.min'を見てください。 –

+0

あなたはそこに行列がないと思います。あなたは行列がどのように見えるかについていくつかの擬似コードを持っています...行列では、minで1を持つ0/1行列を得るために 'as.integer(m == min(m))'を実行できると思います。 – Frank

+0

あなたのマトリックスには1つの行しかありませんか、それとも複数の行があるマトリックスですか?複数の行がある場合、yも同じサイズの疎な行列になりますか? – woodhead92

答えて

0

この場合、私はあなたがwhich.minを望んでいると信じています。

(sample.data <- matrix(rnorm(25), ncol = 5)) 
#>   [,1]  [,2]  [,3]  [,4]  [,5] 
#> [1,] 1.7131439 -0.8245361 1.7140092 -1.05113511 0.08437935 
#> [2,] -0.3139393 -0.1054446 1.5360771 -0.28580350 0.98912223 
#> [3,] 0.8386972 0.6956972 -0.5144028 0.59367973 1.10062439 
#> [4,] 0.1302335 1.4313643 1.3059922 0.48052815 1.83240308 
#> [5,] 0.3926283 -0.5196746 -1.2081396 0.02681044 0.73020269 

(mins <- apply(sample.data, 1, which.min)) 
#> [1] 4 1 3 1 3 
+3

'which.min'は素晴らしく、すべてですが' apply' isn 't。代わりに 'max.col(-sample.data)'を試してみます –

0

ifelseステートメントを使用して行うことができます。

> #Generate DataFrame 
> DF=data.frame(9.8,6,3.8,3.2,2.8,3) 

    X9.8 X6 X3.8 X3.2 X2.8 X3 
1 9.8 6 3.8 3.2 2.8 3 

> #Put 1 to the lowest number and 0 to the rest 
> ifelse(DF==min(DF),1,0) 
    X9.8 X6 X3.8 X3.2 X2.8 X3 
[1,] 0 0 0 0 1 0 
関連する問題