用dplyr函數過濾,分組和變異數據的函數。基本的管道順序在函數外很好地工作,這就是我使用真正的列名的地方。把它放在一個函數中,列名是一個變量,一些函數可以工作,但有些函數並不是最顯着的dplyr :: filter()。例如:爲什麼dplyr filter()在函數內工作(即使用列名稱變量)?
var1 <- c('yes', NA, NA, 'yes', 'yes', NA, NA, NA, 'yes', NA, 'no', 'no', 'no', 'maybe', NA, 'maybe', 'maybe', 'maybe')
var2 <- c(1:18)
df <- data.frame(var1, var2)
這工作正常(即過濾NA的):
df%>%filter(!is.na(var1))
...但是這並不:
x <- "var1"
df%>%filter(!is.na(x))
...但這樣做:
df%>%select(x)
這是NA的需要被特別過濾掉。
試圖獲取( 「X」),沒有好,和切片:
df[!is.na(x),]
...沒有好,無論是。
有關如何傳遞變量以過濾函數內部(或外部)以及爲什麼變量與其他dplyr函數一起工作的任何想法?
爲什麼只有與過濾功能,而不是,例如,使用select()? –
@ConnerM。 'select'同時帶有未加引號和帶引號的字符串,即'df%>%select('var1')''和'df%>%select(var1)'這不僅是'filter'。如果您想進行一些總結,那麼您必須執行相同的步驟 – akrun
sym是否屬於特定的包? –