【问题标题】:Building function to read selected datasets from repository从存储库中读取选定数据集的构建函数
【发布时间】:2020-07-08 20:56:15
【问题描述】:

编码新手 - 我收集了来自多个传感器的数据。

出于分析目的,我想构建一个函数,它接收传感器编号列表并将变量创建/命名为数据框。

目前我写的:

    # establish directory
    setwd("C:/Users/thoma/Desktop/Files/Programming/R/timeseries_sensor_data/")

    # define function
    read_censor_data <- function(id = 1:99){
            for(i in id){

                    # create a variable name for every sensor || read csv
                    assign(paste0("sensor_",i),read.csv(paste0(i,'.csv')))
                    print(paste0("Sensor_",i," has been succesfully read."))
            }
    }
    read_censor_data(12:19)

for 循环正在遍历选定的输入 12 到 19,但尚未创建任何数据帧变量。

谁能建议我哪里出了问题以及如何解决这个问题?

【问题讨论】:

    标签: r for-loop variable-assignment


    【解决方案1】:

    您需要适当地设置环境,因为数据仅在函数中创建。

    read_censor_data <- function(id = 1:99){
       for(i in id){
        assign(paste0("sensor_",i),read.csv(paste0(i,'.csv')), envir = parent.frame())
        print(paste0("Sensor_",i," has been succesfully read."))
      }
    }
    
    read_censor_data(12:19)
    

    但是,从一个函数在全局环境中创建大量数据框通常不是一个好习惯。考虑使用更易于管理的列表。

    read_censor_data <- function(id = 1:99){
       lapply(paste0("sensor_", id), read.csv)
    }
    
    list_df <- read_censor_data(12:19)
    

    然后您可以使用list_df[[1]]list_df[[2]] 等访问每个单独的数据帧。

    【讨论】:

    • 有道理,谢谢!我想在这个函数中创建数据框的原因是它是一个广泛的通用函数,我想在更大的脚本中使用(即:分析来自前 10 个传感器的数据,仅奇数传感器等)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2021-12-26
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    相关资源
    最近更新 更多