使用自定义函数循环时出错

时间:2017-04-29 17:06:12

标签: r function loops

我在调试此问题时遇到一些问题,有人可以告诉我哪里出错吗?

我创建了这个简单的函数,用于多个数据帧以获取相同的信息

TransCleaning <- function(df){
  x <- select(df, a, b, c, d, e, f, g) %>% filter(e != "$0.00")
return(x)
}

由于此函数将使用的数据帧的名称应该保持不变,我可以轻松地对其进行硬编码,但我是一个循环。

所以我在缩短名字后列出了我的数据框。

files2 <- c(substr(files,5,10)

然后我尝试通过这个循环

for(i in 1:length(files2))
{
 clean=TransCleaning(files2[i])
 assign(files2[i], clean)
}

我收到以下错误。它与调用files2列表有关,因为

Transclean(files2[1]) 

也不起作用,而

Transclean(df) 

工作正常。

运行循环和transclean(files2 [1])时得到的错误如下:

Error in UseMethod("select_") : 
no applicable method for 'select_' applied to an object of class "character"

1 个答案:

答案 0 :(得分:0)

在函数中,不返回data.frame字符串对象的值,因此我们可以使用get来执行此操作

for(i in 1:length(files2)){
   clean <- TransCleaning(get(files2[i]))
    assign(files2[i], clean)
}

尽管如此,最好不要在全局环境中创建对象,因为它可以直接读入list,然后可以在list上应用函数,而不是在全局环境中拥有大量对象。