如何更改函数内数据框列表中的列名?

时间:2017-02-22 22:12:30

标签: r list dataframe

我知道"如何更改数据框列表中的名称的答案"已被多次回答。但是,我试图生成一个可以将任何列表作为参数并更改列表中所有数据帧的所有列名称的函数。我正在使用大量.csv文件,所有这些文件都具有相同的3列名称。我按如下方式导入组中的文件:

# Get a group of drying data data files, remove 1st column
files <- list.files('Mang_Run1', pattern = '*.csv', full = TRUE)
mr1 <- lapply(files, read.csv, skip = 1, header = TRUE, colClasses = c("NULL", NA, NA, NA))

我将有6个这样的文件组。如果我在单个列表上运行以下代码,则将正确更改指定列表中每个数据框中的列的名称。

for (i in seq_along(mr1)) {
  names(mr1[[i]]) <- c('Date_Time', 'Temp_F', 'RH')
}

但是,如果我尝试概括该函数(参见下面的代码)以将任何列表作为参数,则它无法正常工作。

nameChange <- function(ls) {
  for (i in seq_along(ls)) {
    names(ls[[i]]) <- c('Date_Time', 'Temp_F', 'RH')
  }
  return(ls)
}

当我在mr1(从上面生成的列表)上调用nameChange时,它会将列表的全部内容打印到控制台,并且不会更改列表中数据框中列的名称。我在这里明显缺少关于R内部运作的基本信息。我在使用和不使用return的情况下尝试了上述功能,并对代码进行了多次修改,但都没有证明是成功的。我非常感谢任何帮助,并且非常希望了解“为什么&#39;这个问题背后也是如此。我在过去处理将列表作为参数的函数中遇到了相当大的麻烦。

非常感谢任何有建设性的意见。

0 个答案:

没有答案