【问题标题】:How to create a list of vectors with specific format?如何创建具有特定格式的向量列表?
【发布时间】:2021-01-05 15:12:00
【问题描述】:

我正在尝试创建一个类似于[1, 1] [1, 2] [1, 3], [2, 1] [2, 2] [2, 3], [3, 1] [3, 2] [3, 3] 的列表。我的意思是该列表包含所有向量 c(i, j) 用于从 1 到 3 的 i 和从 1 到 3 的 j。我无法这样做。我只能生成一个包含数字的数组。

my.array <- array(NA, dim = c(3, 3))
for (i in 1:3) {
  for (j in 1:3) {
    my.array[i, j] <- 5
  }
}

您能否详细说明如何实现我的目标?

【问题讨论】:

    标签: r arrays list


    【解决方案1】:

    我不完全确定您在寻找什么 - 也许是这个?

    matrix(apply(expand.grid(1:3, 1:3), 1, 
                 function(x) paste0("[", paste(x, collapse = ", "), "]")), nrow = 3)
    #>       [,1]     [,2]     [,3]    
    #> [1,] "[1, 1]" "[1, 2]" "[1, 3]"
    #> [2,] "[2, 1]" "[2, 2]" "[2, 3]"
    #> [3,] "[3, 1]" "[3, 2]" "[3, 3]"
    

    还是这个?

    lapply(split(expand.grid(1:3, 1:3), 1:9), function(x) as.vector(unlist(x)))
    #> $`1`
    #> [1] 1 1
    #> 
    #> $`2`
    #> [1] 2 1
    #> 
    #> $`3`
    #> [1] 3 1
    #> 
    #> $`4`
    #> [1] 1 2
    #> 
    #> $`5`
    #> [1] 2 2
    #> 
    #> $`6`
    #> [1] 3 2
    #> 
    #> $`7`
    #> [1] 1 3
    #> 
    #> $`8`
    #> [1] 2 3
    #> 
    #> $`9`
    #> [1] 3 3
    

    【讨论】:

    • 很抱歉不够清楚。我的意思是列表包含所有向量c(i, j)。我想将parallel::clusterApply 应用于该列表。我在并行计算中使用的函数f将每个向量c(i, j)的第一个和第二个坐标作为输入。
    • 当我提取列表的第一个元素时,它还返回符号$。我不确定这是错误还是您的意图。 imgur.com/UM4ZVyQ
    • @LAD 那是因为它是一个列表,按照要求。尝试双括号以获取未列出的内容[[1]]
    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 2013-03-14
    相关资源
    最近更新 更多