小编mar*_*ark的帖子

使用 purrr::walk 从带有动态文件名的嵌套数据帧写入

我使用 purrr::map 将函数应用于嵌套数据框以获取新的数据框列表列。

现在我想使用同一行中的列值作为文件名的一部分将每个新数据帧写入文件。

我陷入了如何提取其他列值以便传递到文件名以写入文件的问题。我相信应该参与其中,但如何访问列变量purrr::walk列表数据框内容的方式是问题所在。

代表如下:

library(tibble) 
library(dplyr)
library(tidyr)  
library(purrr)

# Data
data("mtcars")
mtcars_nest <- mtcars %>% rownames_to_column() %>% rename(rowname_1 = rowname) %>% select(-mpg) %>% group_by(cyl) %>% nest()
mtcars_mpg <- mtcars %>% rownames_to_column() %>% rename(rowname_2 = rowname) %>% select(rowname_2, mpg)

# Function to apply to nested dataframe
join_df <- function(df_nest, df_other) {
  df_all <- inner_join(df_nest, df_other, by = c("rowname_1" = "rowname_2"))
  return(df_all)
}

# 1. Apply function to `$data` to get new dataframe list column and add …
Run Code Online (Sandbox Code Playgroud)

r tidyr purrr

6
推荐指数
1
解决办法
778
查看次数

在PostgreSQL中使用r sf :: st_write到非公共模式

我正在尝试将空间表写入不是PostgreSQL数据库中默认公共模式的模式。

library(sf)
library(DBI)
library(RPostgreSQL)
library(spData)

# PostgreSQL DB parameters
host <- "myHost" 
port <- 5432
username <- "myName"
dbname <- "myDb"
password <- "MyPassword"

# Connect to db  
conn <- dbConnect(PostgreSQL(), dbname = dbname, host = host, port = port, user = username, password = password)

st_write(obj = cycle_hire, dsn = conn, Id(schema="myOtherSchema", table = "myCycle")) # Write data to db - currently only writes to default schema

# Disconnect db
dbDisconnect(conn)
Run Code Online (Sandbox Code Playgroud)

但这会将我的表添加到名称为的公共架构中"myOtherSchema"."myCycle"

在上面也尝试过...

dbWriteTable(conn = conn, name …

postgresql r r-sf

4
推荐指数
1
解决办法
243
查看次数

无法取消嵌套具有不同列类型的列表数据框

我正在从 R 包中封装的 API 中提取一些道路交通数据。我正在使用列表数据框来控制多组记录的下载。

# install.packages(webTRISr)
library(webTRISr)
library(tidyverse)

sites <- c(5745, 6345)
start_date = '01112017'
end_date = '31122017'

road_reports <- data_frame(sites, start_date, end_date) %>% 
  mutate(data = purrr::pmap(list(sites, start_date, end_date), webTRISr::webtris_report, report_type = "daily"))
Run Code Online (Sandbox Code Playgroud)

当我看到unnest结果时...

road_reports %>% 
  unnest(data)
# Error: No common type for `..1$data$Site Name` <character> and `..2$data$Site Name` <double>.
Run Code Online (Sandbox Code Playgroud)

这是因为“站点名称”列在 API 的一次调用中是一个字符,但在另一次调用中是一个双精度字符。

从这个tidyr已关闭的问题(https://github.com/tidyverse/tidyr/issues/658)开始,我认为这已被视为一个错误并已在tidyrv1.0.0 中进行排序。

有解决办法吗?这个 SO 答案的解决方案给出了相同的错误。

我尝试传递一个ptype参数来unnest()强制数据类型,但出现有损转换错误,即:

ptype <- data_frame('Site Name'= character(),
                'Report …
Run Code Online (Sandbox Code Playgroud)

r unnest tidyr

4
推荐指数
1
解决办法
1828
查看次数

标签 统计

r ×3

tidyr ×2

postgresql ×1

purrr ×1

r-sf ×1

unnest ×1