tidyr中的gather(),两种不同的代码,一种是正确的,另一种是错误的

gather() in tidyr, two different codes, one is corrct and the other is wrong

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,key="year",value="population",`1995`:`2013`)

我写信是想问为什么第一个密码不正确,而第二个密码是正确的? 顺便说一句,符号 EDAWR::populationpopulation 相同吗?

对我来说,这两种代码的工作方式相同。我猜您收到错误的原因是因为您的全局环境中有一个名为 population 的数据框,其中 1995 列不存在。

例如,如果我创建一个名为 population 的临时数据框,我可以重现相同的错误。

population <- data.frame(a = 1:5)
gather(population,key="year",value="population",`1995`:`2013`)

Error: Can't subset columns that don't exist. x Column 1995 doesn't exist.

此处 population 数据框是我们创建的只有一列 (a) 的数据框,因此我们得到了错误。使用 EDAWR::population 指的是来自 EDAWR 包的数据帧。

使用 rm(population) 删除 poulation 数据框,我认为这两个代码应该以相同的方式工作。 gather 也已停用,现在被 pivot_longer 取代。