[英]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.