Я хотел бы расширить этот код от {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: x.nsim' вместо' 1: length (x.nsim) ', потому что это просто' 1: 1'. –