编辑:近乎重复的
How to reference column names that start with a number, in data.table
上述帖子data.table
。问题类似但技术上依赖于包,但解决方案是相同的。
开始原始帖子
我无法弄清楚如何使用dplyr::filter
set.seed(1)
library(dplyr)
df <- as.data.frame(matrix(sample(c(TRUE, FALSE), 10, replace=TRUE), ncol=1)) %>%
setNames(c(paste0("1", letters[1])))
# 1a
# 1 TRUE
# 2 TRUE
# 3 FALSE
# 4 FALSE
# 5 TRUE
# 6 FALSE
# 7 FALSE
# 8 FALSE
# 9 FALSE
# 10 TRUE
df[df$"1a"==TRUE,]
# [1] TRUE TRUE TRUE TRUE
df %>% dplyr::filter("1a"==TRUE)
# [1] 1a
# <0 rows> (or 0-length row.names)
答案 0 :(得分:1)
您可以使用反引号来引用具有非标准名称的变量。这适用于它们是否是数据框的列。
针对此特定情况
df %>% dplyr::filter(`1a`) # note that == TRUE is never needed
或者一般来说,
`2b` = 1:5
mean(`2b`)
# [1] 3
当然,你不应该养成这样的坏习惯 - 尽可能使用标准名称。
正如评论中所述,?Quotes
文档很有帮助。它声明(在名称和标识符部分中):
几乎总是,只要引用它们,就可以使用其他名称。首选引号是反引号(`),而
deparse
通常会使用它,但在许多情况下可以使用单引号或双引号(因为字符常量通常会转换为名称)。反引号可能必不可少的一个地方是在公式中分隔变量名称:请参阅formula
。