0

data.framea の列名をの変数に保存していますR。一部の列名にプラス記号が含まれています+。変数に保存するときにを aにR変更します。必要なときにこれらの列を自動的に選択できるように、を保持したいと思います。+.+

列名を変数に保存するために使用しているコマンドは次のとおりです。

for (u in 1:50) {
    k <- colnames[u]
    f <- append(f,k)
}
## f is defined previously in my program

必要な名前を再度取得するために使用しているコマンドは次のとおりです。

file2 <- file1[,f]

例: は変数にcolumn1+名前が付けられていますcolumn1.f

注:これは括弧()とスラッシュで発生しました/

この問題を回避する方法はありますか?

4

1 に答える 1

1

ちょうどそのように、質問は答えられたままです。次のように使用して読み取り中にオプションcheck.namesを設定します。FALSEdata.frameread.table

read.table(file, check.names = FALSE)

注: @Roland がコメントの下で述べているように、このパラメーターを使用するよりも、列名をきれいに保つ方が適切です。また、特定の関数が自動的に名前を元に戻す状況に遭遇する場合もあります。例えば、

df <- data.frame('x+y' = 1:4, 'a+b' = 5:8, check.names = FALSE)
> df
#   x+y a+b
# 1   1   5
# 2   2   6
# 3   3   7
# 4   4   8

# Now adding a 3rd column, using `transform`
transform(df, c=9:12)
#   x.y a.b  c  # note that it reverts back
# 1   1   5  9
# 2   2   6 10
# 3   3   7 11
# 4   4   8 12

transform(df, c=9:12, check.names = FALSE)
#   x+y a+b
# 1   1   5
# 2   2   6
# 3   3   7
# 4   4   8

持っているすべての機能を知りcheck.names=FALSE、それらを正しく使用することを忘れないでください。これは、私が考えることができる少なくとも 1 つの問題です。競合のない列を持つ方がむしろ良いです。

列名などに演算子を含める+と、数式モデル インターフェイスに干渉する可能性もあります。

dat <- data.frame('a+x'=c(1,2,3,4),b=c(2,4,6,8),check.names=FALSE)
lm(dat$b~dat$a+x)
Error in eval(expr, envir, enclos) : object 'x' not found

を使用する必要がありますlm(dat$b~dat[,'a+x'])

于 2013-01-31T11:42:46.160 に答える