0

これは非常に単純な問題かもしれませんが、私はそれを乗り越えることができないようです. X100.4、X100.-4、X100.-5 などの列名を付けます。線形回帰を実行しようとしていますが、これを実行するとエラーが発生します

lm<-lm(X986~X241+X243+X280+X282+X987+X143.2+X239.0+X491.61+X350.-4,data=train)
Error in terms.formula(formula, data = data) : 
  invalid model formula in ExtractVars

変数 X350.-4 がなくても問題なく動作するので、それが問題だと思います。「X350.-4」と「X350.-4」を実行してみましたが、同じエラーが発生しました。また、すべての変数に対して "" を実行しようとしましたが、これも機能しませんでした。

4

2 に答える 2

4

バッククォートを使用できます:

DF <- data.frame(x=1:10, y=rnorm(10))
names(DF)[1] <- "x.-1"

lm(y~`x.-1`, data=DF)

しかし、名前をサニタイズする方が良いでしょう:

names(DF) <- make.names(names(DF))
于 2013-12-04T13:03:17.947 に答える
1

問題は、小数点ではなく、マイナス記号 ("-") にあります。したがって、これらの列名が本当に必要な場合は、@ Roland のアプローチを使用するか、マイナス記号を別のものに置き換えてください。

colnames(data)=gsub(pattern="-",x=colnames(data),replacement="_")

衝突 (同じ名前の複数の列) が発生する可能性があるため、使用make.names(...)は少し危険です。検討:

DF <- data.frame(y=1:3,x.1=6:8,z=11:13)
colnames(DF)[3] <- "x-1"
DF
  y x.1 x-1
1 1   6  11
2 2   7  12
3 3   8  13

names(DF) <- make.names(names(DF))
DF
  y x.1 x.1
1 1   6  11
2 2   7  12
3 3   8  13

以下を使用する必要がある場合があります。

names(DF) <- make.names(names(DF),unique=T)
DF
  y x.1 x.1.1
1 1   6    11
2 2   7    12
3 3   8    13
于 2013-12-04T15:03:39.880 に答える