簡體   English   中英

如何使用 R 中的 Tidyverse 從 dataframe 中的特定列中刪除行 Inf?

[英]How to remove rows Inf from a specific column in a dataframe using Tidyverse in R?

我有一個 dataframe,我想刪除所選列中存在 Inf 值的行。 我正在尋找使用 tidyverse 的解決方案,因為我想將它包含到我的 tidyverse 管道中。

例子:

df <- data.frame(a = c(1, 2, 3, NA), b = c(5, Inf, 8, 8), c = c(9, 10, Inf, 11), d = c('a', 'b', 'c', 'd'))

我想刪除c列中具有 Inf 值的行。 結果將是:

df2 <- data.frame(a = c(1, 2, NA), b = c(5, Inf, 8), c = c(9, 10, 11), d = c('a', 'b', 'd'))

我希望有一個 function 類似於drop_inf() ,類似於drop_na()

編輯:列名作為變量傳遞。

你可以使用is.finite

df %>%
  filter(is.finite(c))

   a   b  c d
1  1   5  9 a
2  2 Inf 10 b
3 NA   8 11 d

如果你想有一個動態列,你可以使用{{ }}

my_fun <- function(df, filter_col){
  df %>%
  filter(is.finite({{filter_col}}))
}

my_fun(df, b)
my_fun(df, c)

這樣,您可以像使用其他dplyr動詞一樣動態地使用my_fun 例如:

df %>% select(a:c) %>% my_fun(c)

另請參閱此問題

暫無
暫無

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

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