我对 R 有点陌生,我有这段代码生成一个我不知道其类型的变量。 R 中是否有任何自省工具可以告诉我这个变量属于哪种类型?
下图说明了该变量的属性:
我正在研究线性模型选择,我拥有的资源是lm
来自另一个模型的结果。现在我想检索lm
通过命令summary(model)$call 进行调用,这样我就不需要对模型结构进行硬编码。但是,由于我必须更改数据集,因此我需要对“字符串”进行一些修改,但显然它不是一个简单的字符串。我想知道是否有任何类似于 string.replace 的命令,以便我可以从变量 $call 操作这个变量。
> str<-summary(rdnM)$call
> str
lm(formula = y ~ x1, data = rdndat)
> str[1]
lm()
> str[2]
y ~ x1()
> str[3]
rdndat()
> str[3] <- data
Warning message:
In str[3] <- data :
number of items to replace is not a multiple of replacement length
> str
lm(formula = y ~ x1, data = c(10, 20, 30, 40))
> str<-summary(rdnM)$call
> str
lm(formula = y ~ x1, data = rdndat)
> str[3] <- 'data'
> str
lm(formula = y ~ x1, data = "data")
> str<-summary(rdnM)$call
> type str
Error: unexpected symbol in "type str"
>
就内省而言:R 允许您轻松地检查和操作语言对象。
有关更多详细信息,请参阅R语言定义 http://cran.r-project.org/doc/manuals/R-lang.html,特别是第 2 节和第 6 节。例如,在您的情况下,summary(rdnM)$call 是一个“调用”对象。您可以通过索引检索它的各个部分,但是您不能像您尝试那样通过分配索引来构造另一个调用对象。您必须构建一个新的调用。
在您的情况下,您正在从现有调用中构建对 lm() 的更新调用。如果您想在不同的数据上重用公式,您可以通过以下方式从调用对象中提取公式formula(foo$call)
,像这样:
foo <- lm(formula = y ~ x1, data = data.frame(y=rnorm(10),x1=rnorm(10)))
bar <- lm(formula(foo$call), data = data.frame(y=rnorm(10),x1=rnorm(10)))
另一方面,如果您尝试更新公式,您可以使用update()
:
baz <- update(bar, . ~ . - 1)
baz$call
##>lm(formula = y ~ x1 - 1, data = data.frame(y = rnorm(10), x1 = rnorm(10)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)