【问题标题】:Why does "write.dat" (R) save data files within folders?为什么“write.dat”(R)将数据文件保存在文件夹中?
【发布时间】:2019-05-10 09:18:06
【问题描述】:

为了使用特定软件进行一些分析,我需要为每个参与者拥有单独的“.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 函数按照我尝试的方式工作它:)

【问题讨论】:

  • 您应该发布包含write.dat 的包。对于不在基本安装中的功能,请始终这样做。
  • 谢谢,我现在已将此添加到问题中。

标签: r


【解决方案1】:

write.dat 上的文档很少,但您似乎将目录 pathfile name 混淆了。您特意创建了一个名为“/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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 2019-06-18
    • 1970-01-01
    相关资源
    最近更新 更多