问题描述
devtools::install_github("rstudio/EDAWR")
library(EDAWR)
gather(population,key="year",value="population",`1995`:`2013`)
Error: Can't subset columns that don't exist.
x Column `1995` doesn't exist.
Run `rlang::last_error()` to see where the error occurred.
gather(EDAWR::population,`1995`:`2013`)
我写信问为什么第一个代码不正确,而第二个代码正确?
顺便说一句,符号 EDAWR::population
是否与 population
相同?
解决方法
对我来说,这两个代码的工作方式相同。我猜您收到错误的原因是因为您的全局环境中有一个名为 population
的数据框,其中不存在列 1995。
例如,如果我创建一个名为 population
的临时数据帧,我可以重现相同的错误。
population <- data.frame(a = 1:5)
gather(population,key="year",value="population",`1995`:`2013`)
错误:不能对不存在的列进行子集化。
x 列 1995
不存在。
这里的 population
数据帧是我们创建的只有一列 (a
) 的数据帧,因此,我们得到了错误。使用 EDAWR::population
是指来自 EDAWR
包的数据帧。
使用 poulation
删除 rm(population)
数据框,我认为这两个代码应该以相同的方式工作。此外,gather
现已停用并替换为 pivot_longer
。