【问题标题】:how to get multiple outcomes for running a function on observations?如何获得多个结果来运行观察函数?
【发布时间】:2020-08-22 20:09:15
【问题描述】:

我将如何多次运行它?

我有一个名为 percent_people 的变量,它查看变量国家/地区是否有 5000000 人,并且有一个名为 city_share 的变量查看每个城市的百分比份额,例如 London = 40%,百分比变量具有不同的水平其中有多少人可能会失业(即从 100% 到 75% 或 50% 或 25% 不等),这些不同的百分比会如何影响失业率的变化?

但是,现在我只能引入一个 city_share 和一个 percent_people 变量。我该如何编写代码以便循环遍历每个变量的多个输入?

现在我有以下内容:

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%_people 参数?例如0.5 和 1 一次?
  • 是的,我想这样做,我该怎么做才能同时接受多个 city_share 参数?

标签: r dplyr tidyverse data-wrangling


【解决方案1】:

我不确定这是否是你想要的,但如果你试图让函数一次接受多个 percent_people 变量,你可以在函数内部循环遍历它,以便它可以接受一个向量百分比:

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)

【讨论】:

  • 嗨,是的,我希望一次接受超过一个 percent_people 的参数
  • 另外 - 一个善意的提醒,如果这些有用的话,其他用户会很高兴他们的答案被赞成/标记为接受。这不仅是对我说的,也是对其他可能曾经帮助过你的其他人说的。见 - stackoverflow.com/help/someone-answers
猜你喜欢
  • 1970-01-01
  • 2016-09-10
  • 2020-08-09
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 2013-07-12
  • 2020-03-13
  • 1970-01-01
相关资源
最近更新 更多