我在调试此问题时遇到一些问题,有人可以告诉我哪里出错吗?
我创建了这个简单的函数,用于多个数据帧以获取相同的信息
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"
答案 0 :(得分:0)
在函数中,不返回data.frame字符串对象的值,因此我们可以使用get
来执行此操作
for(i in 1:length(files2)){
clean <- TransCleaning(get(files2[i]))
assign(files2[i], clean)
}
尽管如此,最好不要在全局环境中创建对象,因为它可以直接读入list
,然后可以在list
上应用函数,而不是在全局环境中拥有大量对象。