为什么“ write.dat”(R)将数据文件保存在文件夹中?

时间:2019-05-10 09:18:07

标签: r

为了使用特定软件进行某些分析,我需要为每个参与者拥有单独的“ .dat”文件,每个文件都称为参与者编号,所有文件都保存在一个目录中。

我尝试使用R中的“ write.dat”函数(来自“ Multiplex”包)来执行此操作。

我编写了一个循环,为数据集中的每个参与者输出一个“ .dat”文件。我希望将输出的每个文件命名为参与者编号,并将它们都存储在同一文件夹中。

## Using write.dat
participants_ID <- unique(newdata$SJNB)
for (i in 1:length(participants_ID)) {
  data_list[[i]] <-  newdata %>%
    filter(SJNB == participants_ID[i])
  write.dat(data_list[[i]], paste0("/Filepath/Directory/", participants_ID[i], ".dat"))
}

## Using write_csv this works perfectly:
participants_ID <- unique(newdata$SJNB)
for (i in 1:length(participants_ID)) {
  newdata %>%
    filter(SJNB == participants_ID[i]) %>%
    write_csv(paste0("/Filepath/Directory/", participants_ID[i], ".csv"), append = FALSE)
}

如果我使用功能“ write_csv”,则可以完美地工作(为每个参与者保存.csv文件)。但是,如果我使用函数“ write.dat”,则每个参与者文件都保存在一个单独的文件夹中-文件夹名称是参与者编号,并且该文件夹中的文件称为“ data_list [[i]]”。为了将所有data_list文件放入同一目录,我必须将它们重命名,这很耗时。

理论上,我可以将文件输出到.csv,然后将其转换为.dat,但是我很想知道是否可以做些什么来使write.dat函数以我尝试的方式工作它:)

1 个答案:

答案 0 :(得分:0)

write.dat上的文档很小,但是似乎您混淆了目录 path 文件名。您已经故意创建了一个名为“ /Filepath/Directory/[participants_ID[i]].dat”的目录,并且在该目录中放置了每个输出文件。您无法为x.dat文件本身添加名称,这似乎是所提供软件包中的缺陷。

但是,并非全部丢失。在循环内,将write.dat行替换为以下行或类似的行(未经测试):

编辑

我觉得有一个更平滑的解决方案,尽管使用了可怕的eval: 再次在循环内部,(假设participants_ID[i]是一个字符字符串)

eval(paste0(participants_ID[i],'<- dataList[[i]]'))
write.dat(participants_ID[i], "/Filepath/Directory/")

上一个答案

write.dat(data_list[[i]], "/Filepath/Directory/")
thecommand = paste0('mv /Filepath/Directory/dataList[[i]]  /Filepath/Directory/',[participants_ID[i]],'.dat',collapse="")
system(thecommand)