将列表与R中的向量组合

Ale*_*ach 6 r

我有一些如下数据:

num = list()
num[[1]] = c(1,2,3)
num[[2]] = c(4,5,6,7)
name = c("Alex", "Patrick")
Run Code Online (Sandbox Code Playgroud)

如何将其组合到一个看起来像这样的数据框?

Alex        1
Alex        2
Alex        3
Patrick     4
Patrick     5
Patrick     6
Patrick     7
Run Code Online (Sandbox Code Playgroud)

我很抱歉发布了一个很明显的问题.我已经广泛搜索并找不到答案,可能是因为我不知道如何很好地描述这个查询.

Ric*_*ven 8

试一试.新lengths()功能在这里派上用场.

data.frame(name = rep(name, lengths(num)), num = unlist(num))
#      name num
# 1    Alex   1
# 2    Alex   2
# 3    Alex   3
# 4 Patrick   4
# 5 Patrick   5
# 6 Patrick   6
# 7 Patrick   7
Run Code Online (Sandbox Code Playgroud)

为了更好地理解这一点,让我们从内到外将它分解成几部分. lengths()告诉我们列表中每个元素的长度,所以我们有

lengths(num)
# [1] 3 4
Run Code Online (Sandbox Code Playgroud)

现在我们使用它作为times参数rep()来复制元素name.

rep(name, lengths(num))
# [1] "Alex"    "Alex"    "Alex"    "Patrick" "Patrick" "Patrick" "Patrick"
Run Code Online (Sandbox Code Playgroud)

这是第一列.对于第二列,我们只需将其num转换为原子向量unlist().

unlist(num)
# [1] 1 2 3 4 5 6 7
Run Code Online (Sandbox Code Playgroud)

如上所示将这些放在一起,我们有了新的数据框.