我想将非矩形数据存储在一个 struct 中,例如list.

参考以前的数据可以使用tibble,例如:

dat <- tibble(a = 2, 
              b = list(c(a + 1, a + 2)),
              c = list(tibble(a = a, b = 3)))

请注意,因为tibble不允许列中包含tibble(否则数据不会是矩形的),所以我们必须将tibble包装在列表中,dat$c不返回tibble,因此我们需要dat$c[[1]].

后一个问题可以用list解决.

dat2 <- list(a = 2, 
             b = c(3, 4), 
             c = tibble(a = 2, b = 3))

但是,现在我无法参照前面的条目构造数据元素:

dat2 <- list(a = 2, 
             b = c(a + 1, a + 2), 
             c = tibble(a = a, b = 3))
> Error: object 'a' not found

我的问题是:有没有一种方法可以构造一个非矩形的数据 struct ,通过引用前面的条目来支持构造?

推荐答案

你可以用lst()来代替:

lst(a = 2, 
    b = c(a + 1, a + 2), 
    c = tibble(a = a, b = 3))

$a
[1] 2

$b
[1] 3 4

$c
# A tibble: 1 × 2
      a     b
  <dbl> <dbl>
1     2     3

R相关问答推荐

我正在努力用R计算数据集中的中值逐步距离

R中的哈密顿滤波

如何基于两个条件从一列中提取行

基于R中的间隔扩展数据集行

在保留列表元素属性的同时替换列表元素

创建列并对大型数据集中的特定条件进行成对比较的更高效程序

Geom_arcbar()中出错:找不到函数";geom_arcbar";

如果条件匹配,则使用Mariate粘贴列名

无法将条件case_when()应用于使用!!创建的新变量Mutations

R中治疗序列的相对时间指数

访问数据帧中未定义的列时出现R错误

在R中添加要打印的垂直线

具有由向量定义的可变步长的序列

从字符串01JAN2021创建日期

将日期列从字符转换为日期得到的结果是NAS

R Bupar:获取每个 case 的踪迹

对多个不整齐的列使用PIVOT_LONG

计算R中各列之间的差异

错误:由错误引起:!`DEPGDS_FIRST`的大小必须为9或1,而不是0

为什么as.numic()函数在R中产生不同的结果?