簡體   English   中英

R。僅顯示 boolean 表達式中的 TRUE 值?

[英]R. Display only TRUE values from a boolean expression?

數據科學學生在這里。 R 的新手,在我的第一門課程中。 我花了太多時間試圖弄清楚這個練習,所以我想我會問這里的人。

我創建了一個由 4 個矩陣構建的 dataframe,標題為 bee_numbers_data_2:

buff_tail garden_bee red_tail honeybee carder_bee
    10          8       18       12          8
     1          3        9       13         27
    37         19        1       16          6
     5          6        2        9         32
    12          4        4       10         23

該練習要求我們只顯示 >= 10 的蜜蜂數量。

所以我創建了一個 boolean 表達式來顯示 TRUE FALSE 語句:

bee_numbers_data_2$honeybee>=10

哪個返回:

[1]  TRUE  TRUE  TRUE FALSE  TRUE

但是,我想顯示 true 語句的 VALUES 列表,而不是 TRUE FALSE 語句的列表。

我一直在研究我的教科書和 inte.net 試圖找出這個簡單的問題,所以任何幫助將不勝感激。 非常感謝。

雖然這是一個相當簡單的問題,在 R 上的大多數介紹性文本中都有涉及,但我在 SO 上找不到重復的問題,因此似乎值得在這里回答。

讓我們分解一下。 正如您已經展示的那樣,我們可以使用 boolean 表達式生成一個包含 boolean 個值的向量:

bee_numbers_data_2 = data.frame(honeybee=c(12,13,16,9,10)) 
bee_numbers_data_2$honeybee >= 10
# [1]  TRUE  TRUE  TRUE FALSE  TRUE

如果我們想知道其中哪些是真的,我們可以使用基數 R function which

which(bee_numbers_data_2$honeybee >= 10)
# [1] 1 2 3 5

如果我們想知道對應於 position 個索引的原始值,我們可以使用這些索引對原始數據進行子集化,使用[

bee_numbers_data_2$honeybee[which(bee_numbers_data_2$honeybee >= 10)]
# [1] 12 13 16 10

或者,等效且更簡單一點,我們可以直接使用 boolean 值進行子集化:

bee_numbers_data_2$honeybee[bee_numbers_data_2$honeybee >= 10]

請注意,當您了解更多 R 時,您會發現還有一些更高級的方法來過濾和子集數據,例如包data.tabledplyr 不過最好先了解base R的使用方法,如上圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM