我正在尝试按名称选择某些列,名称是数字。这是代码:
df2 <- df1 %>% select(`Year`, all_of(append(list1, list2))) %>%
我收到此错误:
错误:不能对不存在的列进行子集化。x 位置 61927、169014、75671、27059、225963 等不存在。i 只有 5312 列。
我认为错误是由于列名是数字。我该如何解决?(我想将列名保留为数字)
我们可以使用any_of
with paste
,这样如果有数值作为列名,它仍然可以工作,如果其中一些也丢失了,它不会抛出错误
library(dplyr)
df1 %>%
select(Year, any_of(paste(c(list1, list2))))
您可以使用 janitor 包清理列名。
df1 <- janitor::clean_names(df1)
如果您在选择中插入一个数字,它将用作位置,购买您可以将数字用作字符。
library(dplyr)
df <- tibble(`2020` = NA,`2021` = NA, "var" = NA)
df
# A tibble: 1 x 3
`2020` `2021` var
<lgl> <lgl> <lgl>
1 NA NA NA
我会给出一个错误,因为只有 3 个变量,如果您使用 2020 将搜索第 2020 列。
df %>%
select(2020)
错误:不能对不存在的列进行子集化。x 位置 2020 不存在。i 只有 3 列。
df %>%
select("2020")
# A tibble: 1 x 1
`2020`
<lgl>
1 NA