gpt4 book ai didi

r - 修改/添加列到嵌套的tibble

转载 作者:行者123 更新时间:2023-12-04 01:35:26 27 4
gpt4 key购买 nike

我有一个带有变量/列的小标题,其中包括不同形状的小标题列表。我想为其中一个变量中的每个(子)标题添加一个变量/列。

例如此类数据

library("tibble")
aaa <- tibble(qq = c(1,2,3),
ww = list(tibble(a = c(1,2), s = c("as", "df")),
tibble(a = 3, s ="q"),
tibble(a = 4, s = "e")),
ee = list(tibble(a = c(1,2), s = c("as", "df")),
tibble(a = c(3,6), s = c("qz", "wz")),
tibble(a = 4, s = "ez")))

看起来像:

 > aaa
# A tibble: 3 x 3
qq ww ee
<dbl> <list> <list>
1 1.00 <tibble [2 × 2]> <tibble [2 × 2]>
2 2.00 <tibble [1 × 2]> <tibble [2 × 2]>
3 3.00 <tibble [1 × 2]> <tibble [1 × 2]>

> aaa$ee
[[1]]
# A tibble: 2 x 2
a s
<dbl> <chr>
1 1.00 as
2 2.00 df

[[2]]
# A tibble: 2 x 2
a s
<dbl> <chr>
1 3.00 qz
2 6.00 wz

[[3]]
# A tibble: 1 x 2
a s
<dbl> <chr>
1 4.00 ez

假设我想在 aaa$ee 中的每个 tibble 中创建一个名为 lll 的新变量,它是每个的第一个字母该表中变量 s 中的字符串。

我可以通过 lapply 获得这些,例如:

lll <- lapply(X = aaa$ee,
FUN = function(z){substr(z$s, 1,1)})

导致

> lll
[[1]]
[1] "a" "d"

[[2]]
[1] "q" "w"

[[3]]
[1] "e"

但是如何将这个列表中的每个向量绑定(bind)为 aaa$ee 中每个 tibble 的列?

产生应该看起来像这样的结果

> aaa$ee
[[1]]
# A tibble: 2 x 2
a s
<dbl> <chr> <chr>
1 1.00 as a
2 2.00 df d

[[2]]
# A tibble: 2 x 2
a s
<dbl> <chr> <chr>
1 3.00 qz q
2 6.00 wz w

[[3]]
# A tibble: 1 x 2
a s
<dbl> <chr> <chr>
1 4.00 ez e

最佳答案

我们可以使用 mapmutate 遍历 'ee' 列来创建 'new' 列

library(purrr)
out <- aaa %>%
mutate(ee = map(ee, ~ .x %>%
mutate(new = substr(s, 1, 1))))


out$ee
#[[1]]
## A tibble: 2 x 3
# a s new
# <dbl> <chr> <chr>
#1 1 as a
#2 2 df d

#[[2]]
# A tibble: 2 x 3
# a s new
# <dbl> <chr> <chr>
#1 3 qz q
#2 6 wz w

#[[3]]
# A tibble: 1 x 3
# a s new
# <dbl> <chr> <chr>
#1 4 ez e

如果我们使用 lapply 方法(使用 base R),然后使用 transform 创建一个新列并将其分配给 '嗯'

aaa$ee <- lapply(aaa$ee, transform, new = substr(s, 1, 1))

关于r - 修改/添加列到嵌套的tibble,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50126316/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com