使用for循环将函数应用于所有现有变量

时间:2018-01-19 15:25:33

标签: r for-loop user-defined-functions

我在for循环中使用用户定义的函数时遇到问题,如下面的代码所示。这似乎是我尝试在函数中输入索引的方式的问题,因为每当我尝试运行它时,我都会收到以下消息。

  

错误:$运算符对原子矢量无效

但是,该功能可以自行运行。当我将它与循环外的一个变量一起使用时,它会返回正确的结果。

基本上,我想要做的是:

  1. 对存储我导入的数据的所有变量运行该函数
  2. 将函数生成的数据存储在同一个变量中,覆盖原始数据。
  3. 可能我的整个方式都是错误的。甚至可以使用他们的名字列表来调用变量吗?示例输入数据使用read.delim导入R,如下所示:

    Data Screenshot

    正在读取大约1,400个文件。

    ## Import files:
    temp = list.files(pattern="*.csv")  #Filenames from working directory       
    for (i in 1:length(temp)) {
        #Clean data to include only RGB
        assign(temp[i], read.delim(temp[i],sep=";", header = T, nrows = 6)) 
    }
    
    allvars <- ls(all.names = T) #List all variables
    
    #Find RGB classes and name
    getClasses <- function(variable) {  
        red <- variable$R[3:5]
        green <- variable$G[3:5]
        blue <- variable$B[3:5]
        classes <- data.frame(red, green, blue)
        print(classes)
    }
    
    #This is where the problem happens:
    for (i in 1:length(allvars)) {
        #Apply getClasses function to current variable and store new data
        assign(allvars[i], getClasses(allvars[i]))  
    }
    #Error: $ operator is invalid for atomic vectors
    

0 个答案:

没有答案