bash: синтаксическая ошибка: ожидается операнд (токен ошибки - & ldquo; - & rdquo;)

Рассмотрим обобщение вашего процесса в определенной функции и переход в параметр года. И для прокрутки функции перейдите в векторе лет в lapply для списка данных, которые будут конкатенированы в конце с помощью do.call(rbind, ...) или bind_rows.

get_whip_data <- function(yr_param) {

    # ASSIGN URLS
    whip_a <- paste0("http://www.espn.com/mlb/stats/pitching/_/year/", yr_param, "/order/false")
    whip_b <- paste0("http://www.espn.com/mlb/stats/pitching/_/year/", yr_param, "/count/41/qualified/true/order/false")
    whip_c <- paste0("http://www.espn.com/mlb/stats/pitching/_/year/", yr_param, "/count/81/order/false")

    # BUILD DATA FRAMES
    a_data <- whip_a %>%
      read_html %>%
      html_node("#my-players-table > div > div.mod-content > table") %>%
      html_table(header = T)

    b_data <- whip_b %>%
      read_html %>%
      html_node("#my-players-table > div > div.mod-content > table") %>%
      html_table(header = T)

    c_data <- whip_c %>%
      read_html %>%
      html_node("#my-players-table > div > div.mod-content > table") %>%
      html_table(header = T)

    # APPEND ALL
    yr_df <- rbind(a_data, b_data, c_data)   # OR do.call(rbind, list(a_data, b_data, c_data))
    yr_df$year <- yr_param

    return(yr_df)
}

df_list <- lapply(2005:2017, get_whip_data)

final_df <- do.call(rbind, df_list)       # REQUIRES SAME COLUMNS ACROSS YEARS
final_df <- dplyr::bind_rows(df_list)     # USE IF COLUMNS MAY DIFFER ACROSS YEARS

Если вам трудно -кодированные ссылки, передайте их с помощью Map (обертка к mapply). Это предполагает, что все параметры равны по длине, где Map повторяется по-разному.

get_whip_data <- function(yr_param, whip_a, whip_b, whip_c) {

    # BUILD DATA FRAMES
    a_data <- whip_a %>%
      read_html %>%
      html_node("#my-players-table > div > div.mod-content > table") %>%
      html_table(header = T)

    b_data <- whip_b %>%
      read_html %>%
      html_node("#my-players-table > div > div.mod-content > table") %>%
      html_table(header = T)

    c_data <- whip_c %>%
      read_html %>%
      html_node("#my-players-table > div > div.mod-content > table") %>%
      html_table(header = T)

    # APPEND ALL
    yr_df <- rbind(a_data, b_data, c_data)
    yr_df$year <- yr_param

    return(yr_df)
}

df_list <- Map(get_whip_data, years_vec, a_urls_vec, b_urls_vec, c_urls_vec)

final_df <- do.call(rbind, df_list)       # REQUIRES SAME COLUMNS ACROSS YEARS
final_df <- dplyr::bind_rows(df_list)     # USE IF COLUMNS MAY DIFFER ACROSS YEARS
0
задан John Kugelman 18 January 2019 в 17:56
поделиться

1 ответ

Как отмечалось в комментариях, я получал данные, которые не были датой, так как они анализировали весь журнал. Поиск входного файла для желаемого текста решил мои проблемы, и я перешел на предложение Чарльза.

while read -r line || [[ -n "$line" ]]
do
    log_date_str="$(awk '{gsub("\\[|\\]", "");print $1" "substr($2,1,length($2)-4)}' <<< "$line")"
    log_date="$(date -d "$log_date_str" +%s)"
    (( ( $(date +%s) - log_date ) <= 3600 )) && echo "$line"
done < <(grep ERROR_STRING /path/to/file.log)
0
ответ дан wafflenator 18 January 2019 в 17:56
поделиться