将数字粘贴为宏

Paste a number as macro

考虑以下数据集:

d <- data.frame(replicate(2,sample(0:1,10,rep=TRUE)))
colnames(d) <- c("2000","2001")

我想制作以下子集:

d2 <- data.frame(d$`2000`)

但是,我不想使用 00,而是想创建一个我可以使用的宏。例如,

year <- 2000

如何将这个新值用作宏。我试过:

d2 <- data.frame(d$`formula(paste(year))`)

但这不起作用。谁能帮帮我?

Usign dplyr 你可以这样做:

d %>% select(paste0(year))

您可以将 year 值更改为字符,然后 select 列。

d[as.character(year)]

#   2000
#1     1
#2     1
#3     1
#4     0
#5     1
#6     0
#7     1
#8     1
#9     1
#10    0

或与 dplyr::select

类似
dplyr::select(d, as.character(year))

您可以使用toStringclass(类似于的解决方案as.character()),即

d2 <- d[toString(year)]

d2 <- d[`class<-`(year,"character")]

两人都会得到

> d2
   2000
1     1
2     1
3     0
4     1
5     1
6     1
7     0
8     1
9     0
10    1

您可以使用 matchcolnamesselect 列 .

d[match(year, colnames(d))]
#   2000
#1     1
#2     1
#3     1
#4     1
#5     0
#6     0
#7     0
#8     0
#9     1
#10    0

which.

d[which(year == colnames(d))]