このコードを{x.a、x.b、x.c}から{x.a、...、x.n}に拡張したいと思います。ここでnは長さ(名前)として定義されます。名前の動的ベクトル:3からnへの増加
names = c("a", "b" , "c")
set.seed(123)
x.nsim = 5000
x.a = runif(x.nsim, min=-1.5, max=1.5)
x.b = runif(x.nsim, min=-1.5, max=1.5)
x.c = 1 - x.a - x.b
for (i in 1:x.nsim) {
z.vec = c(x.a[i], x.b[i], x.c[i])
points(z.vec^3, z.vec, cex=0.1)
}
この拡張を実行しようとしました。何かヒント?
a<-NULL
for (name in names){
#x<-paste("x.",name,"[i]", sep="", collapse="")
a<-cbind(a, paste("x.",name,"[i]", sep="", collapse=""))
a
}
a
z.vec <- NULL
for (i in 1:x.nsim){
for (j in 1:length(names)){
z.vec <- cbind(z.vec, a[j])
points(z.vec^3, z.vec, cex=0.1)
}
}
シーケンシャル名の代わりにデータ構造を使用する必要があります。逐次名を付けようとしているオブジェクトの次元数に応じて、ベクトル、行列、リストを使用します。 – Gregor
「1:length(x.nsim)」の代わりに '1:x.nsim'があるはずです。ちょうど' 1:1'だからです。 –