【发布时间】:2021-10-08 05:35:39
【问题描述】:
我经常使用tidyverse,现在我对base R 的可能性很感兴趣。
我们来看看这个简单的data.frame
df <- data.frame(id = 1:4, nested = c("a, b, f", "c, d", "e", "e, f"))
使用dplyr、stringr 和tidyr 我们可以做到
df %>%
mutate(nested = str_split(nested, ", ")) %>%
unnest(nested)
得到(让我们忽略tibble 部分)
# A tibble: 8 x 2
id nested
<int> <chr>
1 1 a
2 1 b
3 1 f
4 2 c
5 2 d
6 3 e
7 4 e
8 4 f
现在我们想使用基本的 R 工具重建这个。所以
transform(df, nested = strsplit(nested, ", "))
给出了使用mutate-part,但是我们怎么能unnest()这个data.frame呢?我虽然使用unlist(),但找不到令人满意的方法。
【问题讨论】:
-
你需要
data.frame(id = rep(out$id, lengths(out$nested)), nested = unlist(out$nested))whereout <- transform(df, nested = strsplit(nested, ", "))这样的东西 -
这正是我想要的。我想了一会儿,但没有找到好的解决方案。