cv.tree 函数从哪里获取数据来执行交叉验证?

Where does the cv.tree function get the data to perform cross validation from?

ISLR 第 8 章的实验包含以下交叉验证分类树的练习:

library(tree) 
library(ISLR) 
attach(Carseats)
set.seed(2)
train=sample(1:nrow(Carseats), 200)
Carseats.test=Carseats [-train ,]
High.test=High[-train]
tree.carseats=tree(High∼.-Sales,Carseats,subset=train)
cv.carseats =cv.tree(tree.carseats ,FUN=prune.misclass)

现在,我的问题是:cv.tree函数如何在没有数据集作为参数传入的情况下执行交叉验证,或者cv.tree对象引用的训练集?

非常感谢 马努

按照 42 的建议查看了代码,发现了对 model.frame() 的调用,"returns a data.frame with the variables needed to use formula and any .... arguments"。此方法的树实现(忽略检查等)执行以下操作:

eval(tree.carseats$call$data)

基本上提取具有数据集名称的符号(在本例中为 Carseats),然后对其进行计算。

如果这对其他人来说是显而易见的事情,我们深表歉意。

马努