有没有办法初始化或修改允许引用以前值的列表?
Is there a way to initialize or modify a list that allows to reference previous values?
我想在结构中存储非矩形数据,例如在 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
不 return 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
我的问题:有没有一种方法可以构造一个非矩形数据结构,该数据结构确实支持通过引用以前的条目进行构造?
可以参考a = (a <- 2)
dat <- tibble(
a = (a<-2),
b = list(c(a + 1, a + 2)),
c = list(tibble(a = a, b = 3))
)
你会看到
> str(dat)
tibble [1 x 3] (S3: tbl_df/tbl/data.frame)
$ a: num 2
$ b:List of 1
..$ : num [1:2] 3 4
$ c:List of 1
..$ : tibble [1 x 2] (S3: tbl_df/tbl/data.frame)
.. ..$ a: num 2
.. ..$ b: num 3
您可以使用 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
我想在结构中存储非矩形数据,例如在 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
不 return 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
我的问题:有没有一种方法可以构造一个非矩形数据结构,该数据结构确实支持通过引用以前的条目进行构造?
可以参考a = (a <- 2)
dat <- tibble(
a = (a<-2),
b = list(c(a + 1, a + 2)),
c = list(tibble(a = a, b = 3))
)
你会看到
> str(dat)
tibble [1 x 3] (S3: tbl_df/tbl/data.frame)
$ a: num 2
$ b:List of 1
..$ : num [1:2] 3 4
$ c:List of 1
..$ : tibble [1 x 2] (S3: tbl_df/tbl/data.frame)
.. ..$ a: num 2
.. ..$ b: num 3
您可以使用 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