您可以使用「獲取」功能基於其名稱的字符串來得到一個對象,但是從長遠來看,這是最好的變量存儲在一個列表只需以這種方式訪問它們,事情變得更簡單,您可以獲取子集,可以使用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