R中的变量名称向量

Mis*_*sha 7 variables r vector

我想创建一个自动生成单向和多变量回归分析的函数,但我无法弄清楚如何在向量中指定**变量...**这看起来很简单,但略读文档我到目前为止还没弄明白......

简单的例子

a<-rnorm(100)
b<-rnorm(100)
k<-c("a","b")
d<-c(a,b)
summary(k[1])
Run Code Online (Sandbox Code Playgroud)

但是k [1] ="a"并且是一个字符向量... d只是b附加到a,而不是变量名.实际上,我希望k [1]代表向量a.

感谢任何答案......

//中号

Gre*_*now 11

您可以使用"get"函数根据其名称的字符串获取对象,但从长远来看,最好将变量存储在列表中并以这种方式访问​​它们,事情变得更加简单,您可以抓取子集,您可以使用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 )
Run Code Online (Sandbox Code Playgroud)

如果您使用lm(或其他建模函数)以编程方式创建用于分析的模型,那么一种方法是仅对您的数据进行子集化并使用".",例如:

yvar <- 'Sepal.Width'
xvars <- c('Petal.Width','Sepal.Length')
fit <- lm( Sepal.Width ~ ., data=iris[, c(yvar,xvars)] )
Run Code Online (Sandbox Code Playgroud)

或者您可以使用"paste"或"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 )
Run Code Online (Sandbox Code Playgroud)

如果您正在查看自动适合的许多不同模型,请注意多重比较的问题.