【问题标题】:Generate Vector automatically with expression(X['i,n'])使用表达式自动生成向量(X['i,n'])
【发布时间】:2015-11-28 19:23:48
【问题描述】:

我正在尝试生成一个长度为 n 的向量,它应该如下所示:

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

例如:

n <- 3

我想拥有:

(表达式(X['3,3'],X['2,3'],X['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"])

我该如何解决这个问题?

【问题讨论】:

    标签: r vector indexing expression rep


    【解决方案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"])
    

    【讨论】:

    • 类似地,你可以将“list”直接包装到as.expressionas.expression(lapply(paste(n:1, n, sep = ","), function(x) bquote(X[.(x)]))),因为 R 对“list”和“expression”的处理类似
    猜你喜欢
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    相关资源
    最近更新 更多