10 changed files with 64 additions and 26 deletions
+1
View File
@@ -7,6 +7,7 @@ export(join_speaker)
export(party_colors)
export(read_all)
export(read_from_csv)
export(read_from_csv_or_fetch)
export(repair)
export(word_usage_by_date)
export(write_to_csv)
-7
View File
@@ -61,10 +61,3 @@ fetch_all <- function(download_dir="inst/records/", create=FALSE) {
# if successful, set progressbar to 100%
setTimerProgressBar(pb, 250)
}
stop_dir_not_creatable <- function(cond) {
# currently this has call: dir.create(download_dir)
# do we want to change this to fetch_all(...) ?
cond$message <- "Directory does not exist and can't be created. Probably because the path is not writeable."
stop(cond)
}
+7
View File
@@ -19,6 +19,13 @@ check_directory <- function(path, create=F) {
}
}
stop_dir_not_creatable <- function(cond) {
# currently this has call: dir.create(download_dir)
# do we want to change this to fetch_all(...) ?
cond$message <- "Directory does not exist and can't be created. Probably because the path is not writeable."
stop(cond)
}
# appends a file seperator at end of path if needed
make_directory_path <- function(path) {
if (!str_ends(path, .Platform$file.sep)) str_c(path, .Platform$file.sep)
+30 -1
View File
@@ -233,6 +233,11 @@ parse_speakerlist <- function(speakerliste_xml) {
#'
#' @export
write_to_csv <- function(tables, path="inst/csv/", create=F) {
is_valid_res(tables)
stopifnot("path must be of type character" = is.character(path))
stopifnot("create must be of type logical" = is.logical(create))
path <- make_directory_path(path)
check_directory(path, create)
write.table(tables$speaker, str_c(path, "speaker.csv"))
write.table(tables$speeches, str_c(path, "speeches.csv"))
@@ -250,6 +255,9 @@ write_to_csv <- function(tables, path="inst/csv/", create=F) {
#'
#' @export
read_from_csv <- function(path="inst/csv/") {
stopifnot("path must be of type character" = is.character(path))
path <- make_directory_path(path)
list(speaker = read.table(str_c(path, "speaker.csv")) %>%
tibble() %>%
mutate(id = as.character(id)),
@@ -259,5 +267,26 @@ read_from_csv <- function(path="inst/csv/") {
date = as.Date(date)),
talks = tibble %$% read.table(str_c(path, "talks.csv")),
comments = tibble %$% read.table(str_c(path, "comments.csv")),
applause = tibble %$% read.table(str_c(path, "applause.csv")))
applause = tibble %$% read.table(str_c(path, "applause.csv"))) -> res
is_valid_res(res)
res
}
#' @param path directory of csv files to read
#' read data from csv files if they exist already
#' otherwise fetch protocols and then write the data into csv files
#'
#' @export
read_from_csv_or_fetch <- function(path="inst/") {
path <- make_directory_path(path)
res <- tryCatch(read_from_csv(str_c(path, "csv/")),
error = function(c) NULL)
if (!is.null(res)) return(res)
fetch_all(str_c(path, "records/"), create=T)
read_all(str_c(path, "records/")) %>%
repair() ->
res
write_to_csv(res, str_c(path, "csv/"), create=T)
res
}
+1
View File
@@ -9,6 +9,7 @@ Using the `remotes` package, this is easily installed via:
```r
remotes::install_url("https://git.flavigny.de/christian/hateimparlament/archive/master.zip")
```
If you want to build the vignettes, pass `build_vignettes = TRUE`.
# Features
+5 -4
View File
@@ -1,8 +1,8 @@
---
title: "explicittopic"
title: "Analysis of covered topics"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{explicittopic}
%\VignetteIndexEntry{Analysis of covered topics}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
@@ -34,9 +34,10 @@ read_all("../inst/records/") %>% repair() -> res
```
We also used `repair` to fix a bunch of formatting issues in the records.
For development purposes, we load the tables from csv files.
For development purposes, we only fetch records if they are not already
stored as csv files:
```{r}
res <- read_from_csv('../inst/csv/')
res <- read_from_csv_or_fetch('../inst/')
```
## Analysis
+7 -4
View File
@@ -1,8 +1,8 @@
---
title: "genderequality"
title: "Differences in gender"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{genderequality}
%\VignetteIndexEntry{Differences in gender}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
@@ -35,10 +35,13 @@ read_all("../records/") %>% repair() -> res
```
We also used `repair` to fix a bunch of formatting issues in the records.
For development purposes, we load the tables from csv files.
For development purposes, we only fetch records if they are not already
stored as csv files:
```{r}
res <- read_from_csv('../inst/csv/')
res <- read_from_csv_or_fetch('../inst/')
```
and unpack our tibbles
```{r}
comments <- res$comments
+5 -4
View File
@@ -1,8 +1,8 @@
---
title: "generalquestions"
title: "General questions"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{generalquestions}
%\VignetteIndexEntry{General questions}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
@@ -34,9 +34,10 @@ read_all("../inst/records/") %>% repair() -> res
```
We also used `repair` to fix a bunch of formatting issues in the records.
For development purposes, we load the tables from csv files.
For development purposes, we only fetch records if they are not already
stored as csv files:
```{r}
res <- read_from_csv('../inst/csv/')
res <- read_from_csv_or_fetch('../inst/')
```
## Analysis
+3 -2
View File
@@ -38,9 +38,10 @@ talks <- res$talks
We also used `repair` to fix a bunch of formatting issues in the records and unpacked
the result into more descriptive variables.
For development purposes, we load the tables from csv files.
For development purposes, we only fetch records if they are not already
stored as csv files:
```{r}
tables <- read_from_csv('../inst/csv/')
tables <- read_from_csv_or_fetch('../inst/')
comments <- tables$comments
speeches <- tables$speeches
+5 -4
View File
@@ -1,8 +1,8 @@
---
title: "interaction"
title: "Interaction between fractions"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{interaction}
%\VignetteIndexEntry{Interaction between fractions}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
@@ -34,9 +34,10 @@ read_all("../inst/records/") %>% repair() -> res
```
We also used `repair` to fix a bunch of formatting issues in the records.
For development purposes, we load the tables from csv files.
For development purposes, we only fetch records if they are not already
stored as csv files:
```{r}
res <- read_from_csv('../inst/csv/')
res <- read_from_csv_or_fetch('../inst/')
```
## Analysis