Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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
“为什么?”;写入.dat";(R) 是否在文件夹中保存数据文件?_R - Fatal编程技术网

“为什么?”;写入.dat";(R) 是否在文件夹中保存数据文件?

“为什么?”;写入.dat";(R) 是否在文件夹中保存数据文件?,r,R,为了使用特定软件进行一些分析,我需要为每个参与者提供单独的“.dat”文件,每个文件名为参与者编号,所有文件都保存在一个目录中 我曾尝试使用R中的“write.dat”函数(来自“multiplex”包)来实现这一点 我编写了一个循环,为数据集中的每个参与者输出一个“.dat”文件。我希望输出的每个文件都命名为参与者编号,并将它们全部存储在同一文件夹中 ## Using write.dat participants_ID <- unique(newdata$SJNB) for (i in

为了使用特定软件进行一些分析,我需要为每个参与者提供单独的“.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.dat 参与者身份证% write_csv(粘贴0(“/Filepath/Directory/”,参与者_ID[i],“.csv”),append=FALSE) } 如果我使用“write_csv”功能,这将非常有效(为每个参与者保存.csv文件)。但是,如果我使用函数“write.dat”,则每个参与者文件都保存在单独的文件夹中-文件夹名称是参与者编号,文件夹中的文件称为“data_list[[I]]”。为了将所有的数据列表文件放到同一个目录中,我必须重命名它们,这很耗时


理论上,我可以将文件输出到.csv,然后将其转换为.dat,但我很想知道是否有其他方法可以让write.dat函数以我尝试的方式工作:)

关于
write.dat
的文档是次小型的,但您似乎混淆了目录路径和文件名。您特意创建了一个名为“/Filepath/directory/[participants_ID[i]]].dat”的目录,每个输出文件都放在这个目录中。您无法为
x.dat
文件本身分配名称,这似乎是所提供的软件包中的一个缺陷

然而,并不是所有的都失去了。在循环内部,将
write.dat
行替换为以下行或类似行(未测试):

编辑 我突然想到有一个更平滑的解决方案,尽管使用了可怕的
eval
: 同样在循环内部,(假设参与者ID[i]是一个字符字符串)


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