使用子集中的范围字符()/从字符到数字的强制范围

时间:2017-04-06 01:54:26

标签: r subset

我正在努力让subset()函数使用一个范围(即4:7),该范围被称为变量中的一个字符。

我是否有办法强制输入,即变量DayVar,并且我希望函数子集的不同日期是数字,同时避免以下问题:

1。)保持4:7而不是4,5,6,7和

2。)将字符“1:4”转换为数字格式,子集评估可以使用它,就像它是1:4一样。

以下是一个示例数据框:

DayVar = c("1", "2", "3", "4:7")

a <- c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j")
b <- c(61:70)
Day <- c(1:10)

df <- data.frame("a" = a, "b" = b, "Day" = Day)

Subset <- list()
for(i in 1:length(DayVar)){
   Subset[[i]] = subset(df, Day %in% DayVar[i])
}

1 个答案:

答案 0 :(得分:1)

由于thelatemail建议列表有效但您必须更改DayVar引号以获取列表索引:

DayVar <- list(1,2,3,4:7)

Subset <- list()
for(i in 1:length(DayVar)){
  Subset[[i]] = subset(df, Day %in% DayVar[[i]])
}