как получить несколько результатов для выполнения функции по наблюдениям? - PullRequest
2 голосов
/ 07 мая 2020

как мне запустить это несколько раз?

У меня есть переменная с именем percent_people, которая проверяет, есть ли у нас 5000000 человек в переменной стране, и есть переменная city_share, которая смотрит на процентную долю на город, например, Лондон = 40%, переменная процента имеет различные уровни того, сколько из них потенциально могут стать безработными (например, от 100% до 75%, или 50%, или 25%), и как эти разные проценты могут повлиять на изменение уровня безработицы?

Однако , прямо сейчас я могу ввести только одну переменную city_share и одну переменную percent_people. Как я мог его закодировать, чтобы я мог l oop через более одного ввода каждой из переменных?

Прямо сейчас у меня есть следующее:

library(dplyr)

Prediction <- function(city_share,
                       percent_people) {
      unemployed_lon <-5000000 %>% 
        multiply_by(city_share) %>%
        multiply_by(percent_people)

      unemp <- 100000 +unemployed_lon

      unemprate <- unemp %>% divide_by(5000000)

      return(unemprate)
    }

# Check -0.4 share + 100% percent_people

Prediction(0.4,1)

1 Ответ

3 голосов
/ 07 мая 2020

Я не уверен, что это то, что вы хотите, но если вы пытаетесь заставить функцию принимать более одной percent_people переменной одновременно, вы можете oop использовать ее внутри функции, чтобы она могла принять вектор процентов:

library(dplyr)
library(magrittr)

Prediction <- function(city_share,
                       percent_people) {
  unemprates <- c()
  for (i in percent_people){
    unemployed_lon <-5000000 %>% 
      multiply_by(city_share) %>%
      multiply_by(percent_people)
    unemp <- 100000 +unemployed_lon
    unemprate <- unemp %>% divide_by(5000000)
  }
  return(unemprate)
}

# Check -0.4 share + 100% percent_people

Prediction(0.4,c(1,0.5,0.25))

Prediction(0.4,1)

Если вы хотите, чтобы он также возвращал результат нескольких city_share входов, я думаю, что вам, вероятно, потребуется переключиться на списки. Приведенный ниже код может быть не идеальным, но он возвращает один список значений для каждого введенного city_share.

library(dplyr)
library(magrittr)

Prediction <- function(city_share,
                       percent_people) {

  unemprates_all<-list()

  for (i in city_share){
    unemp_share <- c()
        for (j in percent_people){

          unemployed_lon <-5000000 %>% 
          multiply_by(i) %>%
          multiply_by(j)
          unemp <- 100000 + unemployed_lon
          unemp <- unemp %>% divide_by(5000000)
          unemp_share <- append(unemp_share,unemp)

        }
    unemprate <- list(unemp_share)
    unemprates_all[[length(unemprates_all)+1]] <- unemprate
  } 
 return(unemprates_all)
}

# Check -0.4 share + 100% percent_people

Prediction(c(0.4,0.2),c(1,0.5))

Prediction(0.4,1)
...