Генерация вектора автоматически с выражением (X['i,n'])

Я пытаюсь сгенерировать вектор длины n, который должен выглядеть следующим образом:

(expression(X['n,n'],.....,X['1,n']))

Так, например:

n <- 3

Я хочу иметь:

(Выражение (Х ['3,3'], Х ['2,3'], Х ['1,3']))

Я попробовал следующее:

n <- 10
y<- c()


for (i in 1:n){
  y[i] <- rep(expression(X['i,n']),1)
}

y

Выход:

expression(X["i,n"], X["i,n"], X["i,n"], X["i,n"], X["i,n"], 
    X["i,n"], X["i,n"], X["i,n"], X["i,n"], X["i,n"])

Как я могу решить это?

1 ответ

Решение

Здесь я использую bquote чтобы построить отдельные выражения, а затем я использую c объединить их.

n<-5
do.call(c, 
    lapply(paste(n:1,n, sep=","), 
    function(x) 
        bquote(expression(X[.(x)]))
    )
 )
 # expression(X["5,5"], X["4,5"], X["3,5"], X["2,5"], X["1,5"])
Другие вопросы по тегам