r - 如何分隔包含有序对列表的列?
问题描述
我有一个数据集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
解决方案
因为它是list
s的一个vector
,我们可以rbind
用do.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)
推荐阅读
- javascript - 使用 mui 反应表 - mui 厨房水槽示例 - 切换 JSON 和 makeDATA
- c++ - 类中类型“char text [100]”的探测器类型
- excel - 无法从 VBA 中的 MSXML2.IXMLDOMNodeList 变量中提取信息
- excel - 取不同列中的值以将它们收集到单个列下
- git - 如何在强制推送中激活 git hook post-receive?
- python - 如何更改 xarray 中的一个变量?
- authentication - OKTA - 为什么授权或端点端点不起作用?
- c# - 在 UIelementCollection 中移动项目
- javascript - 打开链接搜索然后关闭 javascript
- python - 从创建的类中获取所有字符串