Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t name加载的文件-R_R_Loops_Dataframe_Import - Fatal编程技术网

Can';t name加载的文件-R

Can';t name加载的文件-R,r,loops,dataframe,import,R,Loops,Dataframe,Import,因此,我有一个包含大量csv的文件夹,我将wd设置为该文件夹并提取文件名: data_dir <- "~/Desktop/All Waves Data/csv" setwd(data_dir) vecFiles <- list.files(data_dir) data\u dir加载文件时没有声明任何新内容。每次加载时,它都会加载到fl,因此您只能看到vecFiles中的最后一个文件 两个潜在的解决方案 第一个lappy: fl <- lapply(vecFiles,

因此,我有一个包含大量csv的文件夹,我将wd设置为该文件夹并提取文件名:

data_dir <- "~/Desktop/All Waves Data/csv"  
setwd(data_dir)  
vecFiles <- list.files(data_dir)

data\u dir加载文件时没有声明任何新内容。每次加载时,它都会加载到
fl
,因此您只能看到vecFiles中的最后一个文件

两个潜在的解决方案

第一个
lappy

fl <- lapply(vecFiles, function(x) read.csv(x, header=T, fill=t) )
names(fl) <- vecFiles

fl您希望从工作目录中读取所有csv文件,并将这些文件的位置保存在
vecFiles

为什么你的尝试无效 您当前所做的工作不起作用,因为您在每次迭代中都会用新加载的csv文件覆盖对象
fn
。运行完所有迭代后,只剩下最后一个覆盖的
fn
对象


另一个澄清为什么
fn
仅包含最后一个csv文件的值的示例:如果声明
fn,则在循环的每次迭代中都会覆盖fn的值。你应该巧妙地使用这个函数。你想实现什么?要弄清楚为什么会这样,请继续,完全忽略for循环。例如,我将重命名一些东西
j迭代I结果相同:For(I in 1:length(vecFiles)){name@Dason out-side-of-the-the-loop它可以正常工作:“apr16.csv”“唯一的区别是lappy()将列表作为输出(fn将是一个列表)和sapply()将普通data.frame作为输出(fn将是普通data.frame)”不!!请用一些代码来测试你的断言。这是非常错误的,应该尽快删除。这里你需要使用
lappy
。我不想挑剔太多,但是在这里使用
sapply
是非常错误的。你似乎没有完全理解
sapply
lappy
之间的区别。在这个答案中,应该是正确的你为什么说它是非常错误的呢?第一条评论我理解,但我不理解为什么Sappy是错误的?特别是因为它工作得很好,就我而言,例如
lappy(seq(10,50,by=10),function(x)iris[1:x,])
sappy(seq(10,50,by=10),function(x)iris[1:x,])
查看输出中的差异。您知道
sapply
lappy
做的更多吗?我从您的评论中了解到,您希望所有csv文件都在完全独立的对象中,对吗?在大多数情况下,我发现将它们保存在一个列表中很方便。我正在尝试将它们加载到diff中以文件名命名的不同矩阵,不是一个大矩阵。在本例中,一旦你有了大对象
fl
,就使用它。
names(fl)你想要的答案在这里:但是正如Senor O提到的,这不是执行你想要完成的任务的好方法。
fl <- lapply(vecFiles, function(x) read.csv(x, header=T, fill=t) )
names(fl) <- vecFiles
fl <- read.csv(vecFiles[1], header=T, fill=t)

for(i in vecFiles[2:length(vecFiles)]){
fl <- rbind(fl, read.csv(vecFiles[i], header=T, fill=t) )
}
fn <- "abc"
fn <- "def"
fn
#[1] "def"
fn <- list()
for(i in seq_along(vecFiles)){
  fn[[i]] <- read.csv(vecFiles[i], header=T, fill=T)
}
names(fn) <- vecFiles
fn <- sapply(vecFiles, read.csv, header=T, fill=T)
names(fn) <- vecFiles