È possibile utilizzare la funzione "get" per ottenere un oggetto in base a una stringa di caratteri del suo nome, ma a lungo andare è meglio per memorizzare le variabili in un elenco e basta accedervi in questo modo, le cose diventano molto più semplici, puoi prendere sottoinsiemi, puoi usare lapply o sapply per eseguire lo stesso codice su ogni elemento. Quando si salva o si elimina si può lavorare sull'intero elenco piuttosto che cercare di ricordare ogni elemento. ad esempio:
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)
Se si programatically creazione di modelli per l'analisi con lm (o altre funzioni di modellazione), allora un approccio è quello sottoinsieme solo i dati e utilizzare il, ad esempio "":
yvar <- 'Sepal.Width'
xvars <- c('Petal.Width','Sepal.Length')
fit <- lm(Sepal.Width ~ ., data=iris[, c(yvar,xvars)])
oppure si può costruire la formula con "incolla" o "sprintf" quindi usare "as.formula" per convertirlo in una formula, ad esempio:
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)
Nota anche il problema dei confronti multipli se si sta guardando uomo y diversi modelli si adattano automaticamente.
fonte
2010-08-27 15:56:19
Infatti, usare as.formula() è molto più pulito del costrutto eval() parse() che ho usato. –
Questo sta anche migliorando ... Thx – Misha
Un buon modo di pre-allocare una lista è via vettore ("lista", n) dove n è il numero di elementi che la lista deve contenere. Mi spiace essere un po 'fuori tema. :) –