我有一個包含各種數字的資料框。我想要的是使用所有列值對行進行子集化。
可以使用 dplyr 撰寫以下代碼:
library(dplyr)
set.seed(1)
df <- data.frame (matrix (round (runif(500, 0, 1), digits = 1), 10, 5))
dfn <- df |> dplyr::filter_all (dplyr::any_vars (grepl (0.5,.)))
有誰知道這段代碼的基本 R 版本是什么?很感謝任何形式的幫助。
uj5u.com熱心網友回復:
1)對列應用 grepl,然后獲取總和為正的那些行:
df[rowSums(sapply(df, grepl, pattern = 0.5)) > 0, ]
2)一種變體是使用 lapply 而不是 sapply 和 do.call/pmax 而不是 rowSums:
df[do.call("pmax", lapply(df, grepl, pattern = 0.5)) > 0, ]
3)第三種方法可以從 max.col 中得到
s <- sapply(df, grepl, pattern = 0.5)
df[s[cbind(1:nrow(s), max.col(s))], ]
4)減少| 可以使用
df[Reduce(`|`, lapply(df, grepl, pattern = 0.5)), ]
uj5u.com熱心網友回復:
一種可能性:
has_0.5 <- apply(df, 1, function(x) any(grepl(0.5, x)))
df[has_0.5, ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/534900.html
標籤:r
上一篇:如何從R中的其他組中減去一個組
下一篇:選擇具有最大值的列