df <- structure(list(`a a` = 1:3, `a b` = 2:4), .Names = c("a a", "a b"
), row.names = c(NA, -3L), class = "data.frame")
,数据看起来像
a a a b
1 1 2
2 2 3
3 3 4
跟随电话选择
select(df, 'a a')
给出
Error in abs(ind[ind < 0]) :
non-numeric argument to mathematical function
如何使用select
选择“a a”和/或将其重命名为无空格的内容?我知道以下方法:
names(df)[1] <- "a"
select(df, a=1)
select(df, ends_with("a"))
但如果我正在处理大型数据集,如何在不知道索引数字或类似列名的情况下获得完全匹配?
答案 0 :(得分:52)
您可以使用反引号select
`
变量。
select(df, `a a`)
# a a
# 1 1
# 2 2
# 3 3
但是,如果您的主要目标是重命名该列,则可以在rename
包中使用plyr
,您可以同时使用""
和``
。< / p>
rename(df, replace = c("a a" = "a"))
rename(df, replace = c(`a a` = "a"))
或base
R:
names(df)[names(df) == "a a"] <- "a"
有关使用各种引号的详细说明,请参阅?Quotes
。 “名称和标识符”部分在此处特别相关:
如果引用它们,可以使用其他[语法无效]名称。首选的引用是反复“。
另请参阅?make.names
有关有效名称的信息。
另请参阅this post有关在dplyr
答案 1 :(得分:2)
反引号的一些替代方案,dplyr 0.5.0很好,截至本文撰写时的当前版本。
如果您尝试以编程方式选择参数作为列,并且您不希望重命名或执行类似paste
/ sprintf
列名称的反对,那么可以将as.name
与select
版select_
结合使用,即dplyr::select_(df, as.name("a a"))
:
dplyr
许多select
函数都有非标准版本。对于one_of
具体而言,您还可以将标准版本与选择助手?dplyr::select_helpers
结合使用。有关文档,请参阅dplyr::select(df, dplyr::one_of("a a"))
:
{{1}}
答案 2 :(得分:0)
您可以在位于 Esc 下的“`”中锁定您的间隔变量。注意符号与 <'>
不同a b
\