63
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

「a a」を選択したり、スペースを使用せずに名前を変更したりするにはどうすればよいselectですか? 私は次のアプローチを知っています:

  1. names(df)[1] <- "a"
  2. select(df, a=1)
  3. select(df, ends_with("a"))

しかし、大規模なデータセットで作業している場合、インデックス番号または類似の列名を知らずに完全一致を取得するにはどうすればよいでしょうか?

4

3 に答える 3

74

selectバッククォートを使用して変数を指定できます`

select(df, `a a`)
#   a a
# 1   1
# 2   2
# 3   3

ただし、主な目的が列の名前を変更することである場合は、 と の両方を使用できるrenameinplyrパッケージを使用できます。""``

rename(df, replace = c("a a" = "a"))
rename(df, replace = c(`a a` = "a"))

またはbaseRで:

names(df)[names(df) == "a a"] <- "a"

さまざまな引用符の使用に関する詳細な説明については、 を参照してください?Quotes。ここでは、「名前と識別子」セクションが特に重要です。

他の [構文的に無効な] 名前は、引用されていれば使用できます。好ましい引用符はバッククォートです」.

?make.names有効な名前についても参照してください。

での名前変更に関するこの投稿も参照してくださいdplyr

于 2014-04-03T15:33:58.900 に答える