[英]Use apply functions within %>%
下面我創建了一個函數,如果其中只有一個唯一值,則刪除特定列。 我可以以某種方式在 %>% 內使用 lapply 以避免調用該函數三次嗎? 或者甚至調用所有列的函數?
df <- tibble(col1 = sample(1:6), col2 = sample(1:6), col3 = 3, col4 = 4)
condDelCol <- function(mycolumn, mydataframe) {
if(length(unique(mydataframe[[mycolumn]])) == 1) { mydataframe[[mycolumn]] = NULL }
mydataframe
}
df %>%
condDelCol("col2", .) %>%
condDelCol("col3", .) %>%
condDelCol("col4", .)
使用dplyr
,一個選項是select_if
library(dplyr)
df %>%
select_if(~ n_distinct(.) > 1)
# A tibble: 6 x 2
# col1 col2
# <int> <int>
#1 1 6
#2 6 1
#3 5 5
#4 3 4
#5 4 2
#6 2 3
或者另一種方式是base R
通過遍歷與列sapply
,創建一個邏輯vector
,提取僅具有單一的列名unique
值,並分配( <-
到NULL
i1 <- sapply(df, function(x) length(unique(x)))
df[names(which(i1 == 1))] <- NULL
或帶Filter
Filter(var, df)
你也可以用這個。 它忽略標准差為 0 的列。
df[, sapply(df, sd) != 0]
# A tibble: 6 x 2
col1 col2
<int> <int>
1 1 3
2 5 6
3 6 1
4 2 2
5 3 4
6 4 5
或者如果你想使用管道操作符
df %>%
select(which(sapply(df, sd) != 0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.