2

Rでは、lmを使用したときにベクター名が表示されるように、ベクターの名前を変更するにはどうすればよいですか? 行列では機能するようですが、ベクトルでは機能しないようです。

実際には、ベクトルが 1 に等しい場所をコードでチェックし、この情報を使用して変数に名前を付けたいと考えています。

これが機能するマトリックスの例を次に示します。

y <- replicate(1, rnorm(20,0,1))
x <- rep(0,20)
x <- cbind(x, rep(0,20))
x[10,1] <- 1
x[15,2] <- 1
x_names <- which(x==1,1)
x_names #produces: 10, 15
colnames(x) <- x_names[,1]

reg <- lm(y ~ x)
summary(reg) #reports the results for x15 and x10

結果は「x10」および「x15」として報告されます。

これが機能しないベクトルの例を次に示します。

y <- replicate(1, rnorm(20,0,1))
x <- rep(0,20)
x[10] <- 1
x_names <- which(x==1,1)
x_names
names(x) <- x_names

reg <- lm(y ~ x)
summary(reg) #reports the result only for x, not x10

2 番目のケースでは、出力で変数に「x10」という名前を付けたいのですが、代わりに「x」としか報告されません。

誰かが解決策を提案できますか?

ありがとうございました!

4

1 に答える 1

1

2 番目のインスタンスでは、変数のコレクションではなく、個々の要素に名前を付けていることに注意してください。(ただし、10 個の要素のコレクションに 1 つの名前のみを割り当てているため、残りはNAその名前に s を取得しています)

lmdata.frames が好きです。次のことを試してください。

# creating x, y
x <- rep(0, 20)
x[[10]] <- 1

dat <- data.frame(NameForX=x, y)

lm(y~NameForX, data=dat)

上記の 2 行の NameForX を自分に合ったものに置き換えます

于 2013-09-25T16:10:53.603 に答える