为什么有些数据集需要我们在使用它们之前做`data(somedataset)?

时间:2012-11-12 07:01:45

标签: r dataset lazy-loading packages

为什么我们必须先使用data(spam)才能运行ldaspamElemsStatLearn包中的数据集。

library(ElemStatLearn)
library(MASS) # for lda
spam[5] # is ok
spam.lda = lda(spam ~ . , data = spam) # not ok
data(spam)
spam.lda = lda(spam ~ . , data = spam) # ok 

我们甚至可以在spam[5]运行之前访问data(spam)

2 个答案:

答案 0 :(得分:7)

lda的两次调用都适用于我。 ElemStatLearn使用lazy loading数据,因此您无需致电data

> packageDescription("ElemStatLearn")[["LazyData"]]
# [1] "yes"

答案 1 :(得分:5)

R包括一系列数据集,主要用于示例。其中一些数据集可直接使用(例如iriscars),在某些程序包中,它们不会自动可用,需要调用data将它们附加到当前工作空间,例如:来自meuse包的gstat。因此,ElemStatLearn中的体验有效,spam会自动生效。