【发布时间】:2017-12-31 22:25:26
【问题描述】:
我正在尝试通过预先确定的行号对该数据框进行子集化。
# Make dummy data frame
df <- data.frame(data=1:200)
train.length <- 1:2
# Set pre determined row numbers for subsetting
train.length.1 = 1:50
test.length.1 = 50:100
train.length.2 = 50:100
test.length.2 = 100:150
train.list <- list()
test.list <- list()
# Loop for subsetting by row, using row numbers in variables above
for (i in 1:length(train.length)) {
# subset by row number, each row number in variables train.length.1,2etc..
train.list[[i]] <- df[train.length.[i],] # need to place the variable train.length.n here...
test.list[[i]] <- df[test.length.[i],] # place test.length.n variable here..
# save outcome to lists
}
我的问题是,如果我将行号存储在一个变量中,我如何将每个 [ith] 一个放在子集代码中?
我试过了:
df[train.length.[i],]
还有
df[paste0"train.length.",[i],]
但是,它粘贴为一个字符,它不读取我的 train.length.n 变量...如下
> train.list[[i]] <- df[c(paste0("train.length.",train.length[i])),]
> train.list
[[1]]
data data1
NA NA NA
如果我自己有变量,它会按预期工作。只需要它在 for 循环中工作
所需的输出 - 打印下面的输出
train.set.output.1 <- df[train.length.1,]
test.set.output.1 <- df[test.length.1,]
train.set.output.2 <- df[train.length.2,]
test.set.output.2 <- df[test.length.2,]
我可以手动执行此操作,但对于大量训练/测试集来说它很麻烦......因此 for 循环
【问题讨论】:
-
?caret::createTimeSlices -
它会子集整个数据框吗?
-
我需要将整个数据帧拆分为训练和测试时段。不确定插入符号是否可以做到这一点,第一眼,没有
-
要拆分,只需将
initialWindow和horizon参数设置为将增加y的观察次数的数字,例如caret::createTimeSlices(1:10, 8, 2)。如果总和较小,它将生成折叠以进行交叉验证。
标签: r