我试图对R中的线性模型进行重复的随机子采样。为此,我首先创建一个data.table索引列表,用于训练模型然后使用{{1对于该特定子集。以下是使用lm
中的diamonds
数据集的示例代码:
ggplot2
然后我library(data.table)
library(caTools)
library(ggplot2)
rm(list = ls())
dat <- as.data.table(diamonds)[1:5000,]
n <- 20
dat_list <- lapply(1:n, function(z) return(sample.split(dat$carat, SplitRatio = 3/4)) )
得到不同线性拟合模型的斜率:
sapply
奇怪的是,这在我上次尝试这个时起作用,但今天我得到了以下错误:
dat_list [[z]]出错:递归索引在第2级失败
如果我首先将索引保存到另一个变量,代码似乎有效:
coefs <- sapply(1:n, function(z){
m <- lm(price ~ carat, data = dat[dat_list[[z]],])
return(unname(m$coefficients[2]))
})
我已经在SO上看到了其他问题:Getting error "recursive indexing failed at level 2" in R when trying to recurse through list,r error recursive indexing failed at level 2 matrix和Recursive Index Failed但他们似乎没有回答我的问题?
为什么会出现这种行为,特别是考虑到过去这种行为?我错过了什么吗?