2017-04-26 30 views
0

我正在尝试编写一个函数。数据由十列组成。eval(expr,envir,enclos)中的错误:未找到对象'c2'[具有讽刺意味的是,此列存在于数据框中]

alpha 
c1 c2 c3 c4....c10 
1 0.4 a 
2 0.3 b 
1 -1.2 c 

我想对五个这样的列应用回归。所以,我试着写一个函数。

function.one <- function(c) { 
    glm(c1~c2,data=alpha) } 

function(c=c2) 

我得到的错误,如

Error in eval(expr, envir, enclos) : object 'c2' not found 

有人能告诉我,为什么我得到这个错误eventhough C2是在数据集中。

回答

1

问题是c2位于您的数据集中,而不是全局环境。当您编写f(c2)时,R会查找在全球环境中定义的c2,并且找不到它。 R不知道要在data.frame的列名中四处挖掘。

假设您的数据是data.frame,您需要将其引用为df$c2或或。

您应该阅读R中的标准评估和非标准评估,因为它适用于编写您所期望的功能。

相关问题