您可以使用“获取”功能基于其名称的字符串来得到一个对象,但是从长远来看,这是最好的变量存储在一个列表只需以这种方式访问它们,事情变得更简单,您可以获取子集,可以使用lapply或sapply在每个元素上运行相同的代码。保存或删除时,您可以在整个列表上工作,而不是试图记住每个元素。例如:
mylist <- list(a=rnorm(100), b=rnorm(100))
names(mylist)
summary(mylist[[1]])
# or
summary(mylist[['a']])
# or
summary(mylist$a)
# or
d <- 'a'
summary(mylist[[d]])
# or
lapply(mylist, summary)
如果你是编程创建与LM(或其他建模功能)分析模型,再一个办法是只子集的数据,并使用,例如“”:
yvar <- 'Sepal.Width'
xvars <- c('Petal.Width','Sepal.Length')
fit <- lm(Sepal.Width ~ ., data=iris[, c(yvar,xvars)])
或者你也可以使用“粘贴”或“sprintf的”构建公式,然后使用“as.formula”将其转换为一个公式,如:
yvar <- 'Sepal.Width'
xvars <- c('Petal.Width','Sepal.Length')
my.formula <- paste(yvar, '~', paste(xvars, collapse=' + '))
my.formula <- as.formula(my.formula)
fit <- lm(my.formula, data=iris)
还要注意多比较的问题,如果你正在寻找人y自动适应不同的模型。
事实上,使用as.formula()比我使用的eval()parse()构造更清洁。 – 2010-08-27 16:04:34
这是越来越好...... Thx – Misha 2010-08-27 16:44:13
一个预先分配列表的好方法是通过vector(“list”,n),其中n是列表所假设元素的数量。对不起,有点偏离主题。 :) – 2010-08-27 17:08:38