R 从特定行开始读取目录中的多个文件

R 从特定行开始读取目录中的多个文件,r,R,我正在尝试从工作目录中读取R中的多个文件,并希望从第7行读取每个文件。我不知道该怎么做 我发现如何使用以下命令读取单个文件: data = read.csv(file.choose (), skip = 6 ) 或者我可以像这样读取多个文件: j = list.files() d = lapply(j, read.csv) 你能帮我从第七排开始读多个文件吗 把两者结合起来就行了。您可以将命名参数传递给lappy中的函数: d <- lapply(j,

我正在尝试从工作目录中读取R中的多个文件,并希望从第7行读取每个文件。我不知道该怎么做

我发现如何使用以下命令读取单个文件:

data = read.csv(file.choose (),  skip = 6 )  
或者我可以像这样读取多个文件:

j = list.files()         
     d = lapply(j, read.csv)

你能帮我从第七排开始读多个文件吗

把两者结合起来就行了。您可以将命名参数传递给
lappy
中的函数:

d <- lapply(j, read.csv, skip=6)

d除了@James的答案之外,使用
lappy
只将文件读取到列表中,而不读取到公共的
数据帧中。从你的问题来看,你是否想要这个并不明显。但为了完整起见,我还是要加上它

为了能够识别common
data.frame
中的一行最初属于哪个文件,我经常添加一个带有文件名的列。在伪代码中,这类似于:

files = list.files()
data_list = lapply(files, function(f) {
     dat = read.csv(fname, skip = 6)
     dat$fname = fname
     return(dat)
   })
data_df = do.call("rbind", data_list)
或者,您可以使用awesome
plyr
库,该库在以下方面执行完全相同的操作:

library(plyr)
files = list.files()
data_df = ldply(files, read.csv, skip = 6)
我还没有测试这个伪代码,所以可能还存在一些缺陷。但你知道基本的想法。例如,一个问题可能是
ldply
不会自动将文件名添加为列。然后您需要像我使用
lappy
一样使用函数调用。在这种情况下,
ldply
将保存
do.call
步骤。请注意,
plyr
支持进度条(适合长进程)和并行处理

注:

  • 比起
    j
    d
    ,我更喜欢描述性的名字。这使得代码更容易阅读

谢谢,我就是这么想的,我一定是拼错了什么,我以前试过,但没用,现在可以正常工作:)从帮助页面,
。。。FUN的可选参数
。在您的示例中,
read.csv
==FUN,因此您可以在声明FUN后传递附加参数,即
lappy,j,read.csv,skip=6)
。有关更多详细信息,请参见
?lappy
。这就解释了我现在面临的许多问题:)