有没有办法从R中的命名向量中选择一个范围而不是特定的元素?
vec<-c(1, 2, 3, 4, 5 )
names(vec)<-c('Jan', 'Feb', 'Mar', 'April', 'May')
vec['Jan']
#Something along these lines?
vec['Jan':'Feb']
我们可以使用base R
中的match
和:
,根据向量的names
从开始到结束得到索引的序列,并将vec
子集
vec[match('Jan', names(vec)):match("April", names(vec))]
# Jan Feb Mar April
# 1 2 3 4
使用dplyr
的解决方案。
library(dplyr)
unlist(data.frame(t(vec)) %>% select(Jan:April), use.names = TRUE)
# Jan Feb Mar April
# 1 2 3 4
也许这个:
#Option 1
vec[names(vec) %in% c('Jan','Feb')]
输出:
Jan Feb
1 2
或者这个:
#Index
initial <- 'Jan'
last <- 'Feb'
i1 <- which(names(vec)==initial)
i2 <- which(names(vec)==last)
#Option 2
vec[i1:i2]
输出:
Jan Feb
1 2
还有一些测试:
#Test
initial <- 'Jan'
last <- 'April'
i1 <- which(names(vec)==initial)
i2 <- which(names(vec)==last)
#Option 2
vec[i1:i2]
输出:
Jan Feb Mar April
1 2 3 4
您必须定义initial
和last
才能设置范围。