簡體   English   中英

如何使用帶有“無效”名稱的dplyr SE(即包含空格)?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM