根据另一列提取值

Eri*_*caO 4 r extract

我有一个吐出矩阵的函数,例如:

      x freq
1 FALSE   40
2  TRUE    6
Run Code Online (Sandbox Code Playgroud)

但是当没有FALSE值时,我明白了

     x freq
1 TRUE   46
Run Code Online (Sandbox Code Playgroud)

我想在x = TRUE时提取freq值.如果总是有FALSE和TRUE值,我可以这样做

> matrix [2,2]
[1] 6
Run Code Online (Sandbox Code Playgroud)

但我希望能够提取TRUE值,无论是否存在FALSE值.有谁知道我怎么做到这一点?提前致谢!

har*_*mug 9

正如@Justin所说,你可能正在使用data.frame而不是a matrix.好多了.使用上面的示例,如果您的data.frame看起来如下:

df <- data.frame(x=c(FALSE,TRUE), freq=c(40, 6))
> df
      x freq
1 FALSE   40
2  TRUE    6
Run Code Online (Sandbox Code Playgroud)

无论是否有FALSE值,以下内容都可以满足您的需求.

df$freq[df$x==TRUE]
[1] 6
Run Code Online (Sandbox Code Playgroud)

编辑:正如@DWin指出的那样,你可以通过使用df$x合乎逻辑的事实进一步简化:

> df$freq[df$x]
[1] 6
> df$freq[!df$x]
[1] 40
Run Code Online (Sandbox Code Playgroud)

例如:

> df2 <- data.frame(x=TRUE, freq=46)
> df2
     x freq
1 TRUE   46
Run Code Online (Sandbox Code Playgroud)

仍然有效:

> df2$freq[df2$x==TRUE]
[1] 46
Run Code Online (Sandbox Code Playgroud)

  • 如果df $ x是逻辑的,则`== TRUE`是多余的. (3认同)