将数字粘贴为宏
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))
您可以使用toString
或class
(类似于的解决方案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
您可以使用 match
和 colnames
来 select 列 .
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))]
考虑以下数据集:
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))
您可以使用toString
或class
(类似于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
您可以使用 match
和 colnames
来 select 列 .
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))]