ちょうどそのように、質問は答えられたままです。次のように使用して読み取り中にオプションcheck.names
を設定します。FALSE
data.frame
read.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'])
。