2

エラーが発生せずにこれを行う方法がわかりません。これが私の問題の簡単な例です。

このデータフレームDFがあるとしましょう

a   b  c  d
1   2  3  4
2   3  4  5
3   4  5  6

それから私は変数を持っています

x <- min(c(1,2,3))

今、私は次のことをしたい

y <- DF[a == x]

しかし、「x」のような変数を参照しようとすると、Rがデータフレームで列「x」を探しているため、エラーが発生します。「未定義の列が選択されました」というエラーが表示されます

Rでやろうとしていることをどのように行うことができますか?

4

2 に答える 2

4

特に行列、data.frames、および索引付けについて、Rの概要を読むことでメリットが得られる場合があります。あなたaはdata.frameの列であり、あなたxはスカラーです。そこにある比較は機能しません。

多分あなたは意味しました

R> DF$a == min(c(1,2,3))
[1]  TRUE FALSE FALSE
R> DF[,"a"] == min(c(1,2,3))
[1]  TRUE FALSE FALSE
R> 

これは、最初の行は適合しますが、他の行も適合しないことを示しています。これをラップすると、which()代わりにインデックスが得られます。

于 2010-04-03T19:18:36.150 に答える
2

私はこれがあなたが探しているものだと思います:

> x <- min(DF$a)
> DF[DF$a == x,]
  a b c d
1 1 2 3 4

より簡単な方法(「x」変数を回避する)は次のようになります。

> DF[which.min(DF$a),]
  a b c d
1 1 2 3 4

またはこれ:

> subset(DF, a==min(a))
  a b c d
1 1 2 3 4
于 2010-04-05T14:01:45.580 に答える