[英]How to use dplyr SE with “invalid” names (ie containing spaces)?
我無法弄清楚如何使用無效變量名稱的SE dplyr函數,例如選擇一個帶有空格的變量。
例:
df <- dplyr::data_frame(`a b` = 1)
myvar <- "a b"
如果我想選擇ab
變量,我可以用dplyr::select(df, `ab`)
來做,但是如何用select_
做呢?
我想我只需要在反引號中找到一個“包裝”字符串的函數,這樣我就可以調用dplyr::select_(df, backtick(myvar))
正如MyFlick在評論中所說,通常應該避免這種行為,但是如果你想讓它工作,你可以制作自己的反引號包裝器
backtick <- function(x) paste0("`", x, "`")
dplyr::select_(df, backtick(myvar))
編輯:哈德利回復我的推文,並告訴我,只需使用as.name
將適用於此而不是使用反引號:
df <- dplyr::data_frame(`a b` = 1)
myvar <- "a b"
dplyr::select_(df, as.name(myvar))
我的解決方案是利用select
的能力來使用列位置 。 as.name
解決方案似乎不適用於我的某些列。
select(df, which(names(df) %in% myvar))
如果已經在管道中,甚至更簡潔:
df %>%
select(which(names(.) %in% myvar))
雖然這使用了select
,但在我看來它並不依賴於NSE。
請注意,如果沒有匹配項,則將刪除所有列,不會出現錯誤或警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.