ПРОЕКТ - сбор топи c информации из решений Высокого суда Австралии, опубликованных в Интернете для анализа тенденций во времени.
ТЕКУЩАЯ ПРОБЛЕМА - попытка повторить 'case_importer 'Функция (которая возвращает соответствующие символьные строки из решений) за каждый год количество раз, равное числу дел, решенных в этом году.
Я могу достичь этого вручную, используя для l oop, который выполняет итерацию столько раз, сколько было случаев каждый год - например, с использованием 2020 (в котором до сих пор было 14 случаев):
for (i in 14) {
hc_cases_2020_list[[i]] <- case_importer(2020, i)
}
Однако я бы не стал переписывать количество итераций для каждого года вручную .
Я сохранил количество обращений за год в листе Excel с именем hc_cases_per_year, который имеет два столбца, year и num_cases, и создал функцию, которая дает значение num_cases с помощью год ввода.
Любой совет в решении конкретной проблемы c или выборе лучшего подхода был бы за пределами оценки. ed.
Мой код ниже - спасибо, что нашли время, чтобы прочитать!
library(rvest)
library(dplyr)
library(readxl)
# Function to import html data and turn it into text
html_to_text <- function(url) {
url %>%
read_html %>%
html_nodes("li , p , blockquote , b , h2") %>%
html_text
}
# Function to extract topic paragraphs using grep
grep_topics <- function(text) {
grep("^\\n?(:?\\w+\\s)+\\(?C?t?h?\\)?\\s?–.*", text, perl = TRUE, value = TRUE)
}
# Function to wrap the above funtions into a single function that takes year and case number
case_importer <- function(year, case_num) {
url <- url_maker(year, case_num)
text <- html_to_text(url)
grep_topics(text)
}```
# Function + command to create empty list for each year
list_namer <- function(year) {
assign(paste0("hc_cases_", year, "_list", sep = ""), list(), envir = .GlobalEnv)
}
for (i in 1948:2020) {
list_namer(i)
}
# Function to change list to dataframe
list_to_df <- function(list) {
num_obs <- sapply(list, length)
seq_max <- seq_len(max(num_obs))
t(sapply(list, "[", i = seq_max))
}
# Function to return number of cases in given year
cases_in_year <- function(year) {
hc_cases_per_year$num_cases[year - 1947]
}
# Function to create a URL for any given year and case number
url_maker <- function(year, case_num) {
paste("http://classic.austlii.edu.au/au/cases/cth/HCA/", year, "/", case_num, ".html", sep = "")
}
# Importing hc_cases_per_year
hc_cases_per_year <- read_excel("PATH/hc_cases_per_year.xlsx")