Как исправить ошибку "Элемент 2` .l` должен иметь длину 1 или 13, а не 8 "в R? - PullRequest
0 голосов
/ 26 июня 2019

Я пишу пользовательскую функцию, которая позволила бы мне создавать несколько отдельных коробочных графиков. Ось x всегда должна быть месяцами, однако ось y должна принимать несколько значений, и код должен рисовать отдельное графическое поле для каждого случая. Когда я пытаюсь запустить код, написанный ниже, я получаю следующую ошибку: «Ошибка: элемент 2 из .l должен иметь длину 1 или 13, а не 8». Можете ли вы объяснить, почему эта ошибка происходит и как ее исправить?

Заранее спасибо!

forestfires <-read.csv(url(
     "https://archive.ics.uci.edu/ml/machine-learning-  databases/forest-fires/forestfires.csv"))

boxplot_months <- function(a,b, mydataset) {
  ggplot(data = mydataset) +
    aes_string(x=a, y=b) +
    geom_boxplot() +
    theme(panel.background = element_rect(fill="white")) +
    labs(x=a, y=b)
}

indices_vect <- c("FFMC", "DMC", "DC","ISI","temp","RH", "wind",     "rain")
args_list <- list(a="month",b=indices_vect, mydataset=forestfires)

pmap(args_list, boxplot_months)

1 Ответ

0 голосов
/ 27 июня 2019

Это происходит потому, что pmap ожидает, что ваш список входов (.l) будет иметь одинаковую длину. В вашем случае a имеет длину 1, будучи одной строкой. forestfires имеет длину 13 (длина df - количество столбцов).

Поскольку все, что имеет длину 1, может быть векторизовано до более длинной длины путем повторения, оно ожидает, что ваш другой элемент списка, b, будет иметь либо длину 1, и в этом случае a и b будут реплицированы 13 раз, либо иметь длину 13 , в этом случае реплицируется только a.

В вашем случае вам вообще не нужно pmap, просто map, потому что единственный вход, который меняется каждый раз, это b. Если вы измените свою последнюю строку на:

map(.x = indices_vect, .f = boxplot_months, a = "month", mydataset = forestfires)

Все должно работать, и вы получите свои 8 участков. Это использует аргумент ... в map, где вы можете указать другие аргументы для функции .f, которые не меняются при прохождении списка .x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...