r - 如何将 bind_rows 与 tibble 一起使用?
问题描述
我正在尝试使用 tidyverse 中的 bind_rows 和 tibble,并得到意想不到的结果。
当我将几个数据框组合在一起bind_rows
然后将它们转换为 atibble
时,列名会变得混乱:
library(tidyr)
pred.models <- c('1.csv', '2.csv', '3.csv')
prediction.slides <- list()
for (modelid in pred.models){
tmp <- read.csv(modelid)
tmp[,'modelid'] <- modelid
prediction.slides[[length(prediction.slides)+1]] <- (tmp)
}
prediction.slides <- (bind_rows(prediction.slides))
typeof(prediction.slides)
# -> list
# now let's see what we got:
prediction.slides
# -> `bind_rows(prediction.slides)`$hash $class_prob $modelid
但是,当我尝试以下操作时:
pred.models <- c('1.csv', '2.csv', '3.csv')
prediction.slides <- list()
for (modelid in pred.models){
tmp <- read.csv(modelid)
tmp[,'modelid'] <- modelid
############################################ Changed here:
prediction.slides[[length(prediction.slides)+1]] <- tibble(tmp)
}
prediction.slides <- (bind_rows(prediction.slides))
我Error: Argument 1 can't be a list containing data frames
在最后一行收到错误。bind_rows
考虑到根据文档组合数据帧列表,这很奇怪。
知道如何正确地做到这一点并获得一个不错的 tibble 作为输出吗?
UPD:csv 文件如下所示:
hash,class_prob
1578d8,0.9451976000
1c7644,0.4519760001
dc7358,0.5197600012
解决方案
原因是它tibble()
没有做你认为它做的事情。你需要as_tibble()
。tibble()
用于从给定的输入构造 data.frames,同时as_tibble()
将输入转换为 tibble,这正是您想要的。
推荐阅读
- apache-kafka - 将 Kafka 连接源直接连接到 kafka 连接接收器
- python - 任务/消息队列的容量规划
- excel - VBA将粘贴的html数据显示为表格
- r - 在 R Shiny 条件面板中,为什么我无法在同一个主面板中渲染多个绘图?
- python - 具有相同代码的行中后续值之间的差异:值错误
- java - 使用 JavaPairdRdd 的 groupBy 数据
- python - 使用 Pandas 导出到 csv 时,有没有办法用双引号将所有值括起来?(但不是列名)
- javascript - 如何在 iframe 标签中隐藏 src 属性值(url)?
- git - 是否发生了自动 git stash pop ?
- javascript - 在 Javascript 中检索并显示数据表单 (GET)