首页 > 解决方案 > 如何分隔包含有序对列表的列?

问题描述

我有一个数据集df,其中第三列new的形式为

在此处输入图像描述

我想问一下如何创建 2 个新列new,其中第一列包含每个列表中的第一个元素,第二列包含每个列表中的第二个元素。特别是,它看起来像

在此处输入图像描述

这可以通过每行的简单循环来完成。因为我的真实数据集包含超过 100.000 行,所以循环效率不高。您能否详细说明一种有效的方法?

data("mtcars")
df <- mtcars[, 1:2]
df$new <- lapply(setNames(asplit(df[c('mpg', 'cyl')], 1), NULL), as.vector)
df$mpg <- 0
df$cyl <- 0

标签: rdataframesubset

解决方案


因为它是lists的一个vector,我们可以rbinddo.call, 改变列名setNames

out <- setNames(do.call(rbind.data.frame, df$new), c('var1', 'var2'))

如果需要分配给'mpg','cyl'已经创建为'0'

df[c('mpg', 'cyl')] <- do.call(rbind, df$new)

推荐阅读