R 应该使用哪些数据结构,哪些数据结构可以以定制的方式追加?

R 应该使用哪些数据结构,哪些数据结构可以以定制的方式追加?,r,R,我必须从与多个实验相关的文件中加载数据,然后对其进行处理以生成绘图。每个实验生成多个文件。与实验1相关的文件名为“实验1”,然后按其包含的数据类型进行后期固定,即“实验1-per0”、“实验1-per50”、“实验1-per100” 所有实验的这些后缀都是固定的。因此,为了加载文件,我只想给出实验名称,然后在R-script中附加后缀。因此,对于我将给出的每个实验名称“ExperimentX”,我将通过添加后缀加载三个单独的数据文件(即“ExperimentX-per0”、“Experiment

我必须从与多个实验相关的文件中加载数据,然后对其进行处理以生成绘图。每个实验生成多个文件。与实验1相关的文件名为“实验1”,然后按其包含的数据类型进行后期固定,即“实验1-per0”、“实验1-per50”、“实验1-per100”

所有实验的这些后缀都是固定的。因此,为了加载文件,我只想给出实验名称,然后在R-script中附加后缀。因此,对于我将给出的每个实验名称“ExperimentX”,我将通过添加后缀加载三个单独的数据文件(即“ExperimentX-per0”、“ExperimentX-per50”、“ExperimentX-per100”)

我不知道应该在哪个数据结构中存储最初的实验名称,然后是后缀名称。

示例文件(实验1-50):


目前,我手动输入每个文件名,这需要很多时间

如果每个实验都有相同的后缀集,您可以分别存储实验名称和后缀名称列表。然后,使用嵌套循环,您可以使用
paste
函数组合实验名称和后缀名称以获得文件名

您的代码可能如下所示:

experiments = c("Experiment1","Experiment2","Experiment3")
suffixes = c("per0","per50","per100")

for (experiment in experiments) {
  for (suffix in suffixes) {
    filename <- paste(experiment, suffix, sep="-")
    df <- read.table(filename)
    df$experiment <- experiment
    # Do something with the dataframe here
  }
}
如果所有列都不同 如果实验之间的列不同,我会将实验包装在列表中,如下所示:

library(plyr);
experiments <- c("Experiment1","Experiment2","Experiment3");
suffixes <- c("per0","per50","per100");

# if you want to go ahead and get the data
data <- llply( experiments, function(experiment) {
    llply( suffixes, function(suffix) {
        fn <- str_c(experiment,'_',suffix,'.csv'); # make filename
        # later, try to read fn, now just return
        return(fn);
    })
})

这将把所有数据作为单个
data.frame
读取,然后您可以根据需要对其进行解析(例如,使用
plyr
和/或
子集
)。

这是一个更好的问题。确保向回答您问题的人提供反馈(特别是如果他们的答案没有针对您的问题),并投票支持他们和/或选择正确的“答案”。@Jonathan感谢您的指导:)虽然我理解您的目的(即,如果文件中的列不同),但我确实无法获得代码。(实际上,@Wilduck的答案的主要区别在于它使用函数式编程而不是循环,这在R中通常是不受欢迎的。这可能会让人困惑,但有时,你可能想花时间学习。干杯。
as.vector(sapply(experiments, paste, suffixes, sep="-"))
library(plyr);
experiments <- c("Experiment1","Experiment2","Experiment3");
suffixes <- c("per0","per50","per100");

# if you want to go ahead and get the data
data <- llply( experiments, function(experiment) {
    llply( suffixes, function(suffix) {
        fn <- str_c(experiment,'_',suffix,'.csv'); # make filename
        # later, try to read fn, now just return
        return(fn);
    })
})
library(plyr);
experiments <- c("Experiment1","Experiment2","Experiment3");
suffixes <- c("per0","per50","per100");

data <- ldply( experiments, function(experiment) {
    ldply( suffixes, function(suffix) {
        data.frame(
           experiment = experiment,
           suffix= suffix,
           fn = str_c(exper.name,'_',suffix,'.csv'))
    })
})