R 为什么TidySensus get_decentanial()在函数中使用时失败?
我很困惑为什么会发生这种错误。我试图编写一个函数,将字符串从R 为什么TidySensus get_decentanial()在函数中使用时失败?,r,tidycensus,R,Tidycensus,我很困惑为什么会发生这种错误。我试图编写一个函数,将字符串从tidyensus包传递到get_decentanial(),但它抛出了一个错误 我能够在函数范围外成功运行相同的代码。我似乎无法理解为什么将输入传递给函数会导致它失败。特别是,因为我成功地将对象传递给了country参数的函数(如下所示)。还有其他人遇到过类似的情况吗?我认为下面的例子说明了这个问题。我试图复制上一次调用的输出/错误,但我为预先设置的低质量格式道歉 library(tidycensus) library(dplyr)
tidyensus
包传递到get_decentanial()
,但它抛出了一个错误
我能够在函数范围外成功运行相同的代码。我似乎无法理解为什么将输入传递给函数会导致它失败。特别是,因为我成功地将对象传递给了country
参数的函数(如下所示)。还有其他人遇到过类似的情况吗?我认为下面的例子说明了这个问题。我试图复制上一次调用的输出/错误,但我为预先设置的低质量格式道歉
library(tidycensus)
library(dplyr)
census_api_key(Sys.getenv("CENSUS_API_KEY")) # put your census api key here
oregon <- filter(fips_codes, state_name == "Oregon")
oregon_counties <- oregon$county_code
# this works
why_does_this_work <- "Oregon"
get_decennial(geography = "block group",
state = why_does_this_work,
variables = "H00010001",
county = oregon_counties,
quiet = TRUE)
# why doesn't this work
why_doesnt_this_work <- function(x) {
get_decennial(geography = "block group",
state = x,
variables = "H00010001",
county = oregon_counties,
quiet = TRUE)
}
why_doesnt_this_work("Oregon")
库(tidycensus)
图书馆(dplyr)
普查api密钥(Sys.getenv(“普查api密钥”)#将普查api密钥放在这里
俄勒冈州因为R是如何沿着环境层次评估对象的。
换句话说,在get_decentanial()函数的代码中已经有一个名为“x”的元素。您的自定义函数why_doesnu this_work()的计算级别与get_decenial()相同。因此,至少有两个元素/对象的相同值应用于get_decentanical管道,从而破坏了这些东西
为了解决这个问题,只需将您的自定义x重命名为get_Decenial所期望的,即“状态”
为什么不这样做,因为R是如何评估环境层次结构中的对象的。
换句话说,在get_decentanial()函数的代码中已经有一个名为“x”的元素。您的自定义函数why_doesnu this_work()的计算级别与get_decenial()相同。因此,至少有两个元素/对象的相同值应用于get_decentanical管道,从而破坏了这些东西
为了解决这个问题,只需将您的自定义x重命名为get_Decenial所期望的,即“状态”
为什么这个不行
why_doesnt_this_work <- function(state) {
get_decennial(geography = "block group",
state = as.character(state),
variables = "H00010001",
county = oregon_counties,
quiet = TRUE)
}
why_doesnt_this_work('Oregon') ## Now it works!