为什么rbind需要一个循环来创建一个数据帧而不仅仅是一个矩阵向量

时间:2015-06-02 21:55:13

标签: r

for (i in 1:5) {
        dat <- rbind(dat, read.csv(files_full[i]))

有效,但

dat <- rbind(dat, read.csv(files_full[1:5]))

  

文件错误(文件,“rt”):无效的'description'参数

files_full会返回此信息:

[1] "diet_data/Andy.csv"  "diet_data/David.csv" "diet_data/John.csv" 
[4] "diet_data/Mike.csv"  "diet_data/Steve.csv"

从这个练习中: https://github.com/rdpeng/practice_assignment/blob/master/practice_assignment.rmd

1 个答案:

答案 0 :(得分:1)

rbind()用于绑定其所有参数,而不是绑定在其参数内的列表中的元素。例如

dat <- rbind(read.csv(files_full[1]), read.csv(files_full[2], read.csv(files_full[3])

会奏效。如果要将列表转换为参数,请使用do.call

dat <- do.call("rbind", Vectorize(read.csv, SIMPLIFY = FALSE)(files_full))

在这里,我使用Vectorize()允许read.csv在给定文件名向量时返回列表。