【问题标题】:R: Multidimensional array index assignmentR:多维数组索引赋值
【发布时间】:2014-11-15 22:07:18
【问题描述】:

考虑以下数组赋值:

temp=array(list(),2)
temp[[2]][[2]]=c("a","b")
temp[[1]][[2]]="c"

这会产生以下结果:

temp
[[1]]
[1] NA  "c"

[[2]]
[[2]][[1]]
NULL

[[2]][[2]]
[1] "a" "b"

相反,我希望结果是:

temp
[[1]]
[[1]][[1]]
NULL
[[1]][[2]]
[1] "c"

[[2]]
[[2]][[1]]
NULL

[[2]][[2]]
[1] "a" "b"

我如何进行分配,以便产生前者而不是后者?

【问题讨论】:

  • 试试list(list(NULL, "c"), list(NULL, c("a", "b")))
  • 在我的实际代码中,我使用循环和其他具有可变输出的函数来创建这个数组的内容。我无法在我的功能中间手动解决问题;我需要一些方法将结果直接插入到数组中的适当位置。

标签: r list multidimensional-array indexing


【解决方案1】:

您可以使用replicate 而不是array 来初始化列表。列表和数组的行为不同

x <- replicate(2, list())
x[[1]][[2]] <- "c"
x[[2]][[2]] <- c("a", "b")
x

注意:

is.array(x)
# [1] FALSE
sapply(x, is.array)
# [1] FALSE FALSE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多