r - 如何在 R 中将.table() 多个文件读入一个表中?

标签 r import

我有一个名为 <InputData>.<TestName>.csv 的文件名我想为每个测试制作图表。我能看到的最好的方法是为每个 TestName 创建一个 R 表。每个测试产生相同的数据列,所以我想将每个测试的所有数据拉入一个 R 数据表,并为输入数据增加一列。

我想做:

read.tables(c("B217.SE.csv", "C10.SE.csv"), sep=",")

产生(例如):
       Filename  col1   col2
1   B217.SE.csv     1      2
2   B217.SE.csv     2      4
3   C10.SE.csv      3      1
4   C10.SE.csv      4      5

这样做的正确方法是什么?一些我不知道的现有功能?使用 for 循环在 R 语言中写出它?

最佳答案

我无法在你的数据上测试它,但你会想要使用 apply像这样输入函数:

data <- do.call("rbind", lapply(c("file1", "file2"), function(fn) 
           data.frame(Filename=fn, read.csv(fn)
))

或者,您可以使用 plyr 来简化它.这是对如何工作的粗略模拟(使用数据框而不是文件):
> df1 <- data.frame(c1=1:5, c2=rnorm(5))
> df2 <- data.frame(c1=3:7, c2=rnorm(5))

在这种情况下,我将使用 get而不是 read.csv :
> data <- ldply(c("df1", "df2"), function(dn) data.frame(Filename=dn, get(dn)))
> data
  Filename c1          c2
1  df1  1 -0.15679732
2  df1  2 -0.19392102
3  df1  3  0.01369413
4  df1  4 -0.73942829
5  df1  5 -1.27522427
6  df2  3 -0.33944114
7  df2  4 -0.12509065
8  df2  5  0.11225053
9  df2  6  0.88460684
10 df2  7 -0.70710520

编辑

按照 Marek 的建议,您可以覆盖或创建自己的函数:
read.tables <- function(file.names, ...) {
    require(plyr)
    ldply(file.names, function(fn) data.frame(Filename=fn, read.csv(fn, ...)))
}

data <- read.tables(c("filename1.csv", "filename2.csv"))

关于r - 如何在 R 中将.table() 多个文件读入一个表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2104483/

相关文章:

java - 在根目录中导入Java包

r - 将重叠的圆圈添加到具有均匀透明度的传单 map 中

R - 如何从表达式中提取对象名称

r - 如何在逻辑回归中以数字的形式获得ROC的最佳分界点

function - 从另一个模块调用函数

python - Django 。导入应用模块

c - 回收 `rbinom` 输入的代码在哪里?

r - 将多列相互相乘成R中的新数据框

java - 当导入路径包含经常更改的版本号时,是否有一种聪明的方法来管理 Java 中的导入?

api - Magento API : Rebuild Indexes after adding new products