使用tidycensus加载数据时遇类型转换错误求助
解决tidycensus加载变量时的
cannot coerce type 'closure' to vector of type 'character'错误 嘿,这个错误我之前也碰到过,大概率是你在get_acs()里用了表格编号而非具体的变量ID导致的,咱们一步步来解决:
问题根源
你写的variables = "B17021"是美国人口普查里贫困状况表格的编号,不是单个变量的ID。get_acs()需要的是表格下的具体变量代码(格式为表格编号_三位数字,比如B17021_001),直接传表格编号会让函数无法识别,从而抛出类型转换错误。
另外补充个小细节:St. Louis City在密苏里州是独立县,名称拼写没问题,但如果后续还是有county相关的错误,可以用它的FIPS代码510来替代名称,更稳妥。
修正后的代码
library(tidycensus) library(tidyverse) # 建议把API密钥永久保存,避免每次都输入 census_api_key("你的API密钥内容", install = TRUE) readRenviron("~/.Renviron") # 加载环境变量 # 示例:加载B17021表格里的第一个变量(总家庭数),你可以根据需求替换成其他子变量 poverty <- get_acs( geography = "block group", variables = "B17021_001", # 这里必须是具体的变量ID state = "MO", county = "St. Louis City", geometry = TRUE ) # 如果需要加载B17021表格的所有变量,可以用这段代码批量生成变量ID # poverty_all <- get_acs( # geography = "block group", # variables = paste0("B17021_", str_pad(1:17, 3, pad = "0")), # state = "MO", # county = "St. Louis City", # geometry = TRUE # )
如何找到正确的变量ID?
你可以用tidycensus自带的函数查看所有ACS变量:
# 加载2021年ACS 5年数据的变量列表(年份可以根据你的需求调整) vars <- load_variables(2021, "acs5", cache = TRUE) # 搜索B17021相关的变量 filter(vars, str_detect(name, "^B17021"))
运行后你会看到B17021下所有子变量的名称和含义,按需选择即可。
内容的提问来源于stack exchange,提问作者Racheal Amelung
相关产品推荐
相关产品推荐

