如何在R中写出具有不同文件名的多个文件

如何在R中写出具有不同文件名的多个文件,r,filenames,multiple-tables,R,Filenames,Multiple Tables,我有一个大文件(>10000行数据),我想按ID写一个单独的文件。我有50个唯一的ID名称,我想为每个单独的文本文件。这是我到目前为止得到的,我不断地出错。我的ID实际上是字符串,如果我能用这个字符串命名每个文件,我会更喜欢这个字符串 for (i in 1:car$ID) { a <- data.frame(car[,i]) carib <- car1[,(c("x","y","time","sd"))] myfile <- gsub("( )", "

我有一个大文件(>10000行数据),我想按ID写一个单独的文件。我有50个唯一的ID名称,我想为每个单独的文本文件。这是我到目前为止得到的,我不断地出错。我的ID实际上是字符串,如果我能用这个字符串命名每个文件,我会更喜欢这个字符串

for (i in 1:car$ID) {
    a <- data.frame(car[,i])
    carib <- car1[,(c("x","y","time","sd"))]
    myfile <- gsub("( )", "", paste("C:/bridge", carib, "_", i, ".txt"))
    write.table(a, file=myfile,
                sep="", row.names=F, col.names=T quote=FALSE, append=FALSE) 
}
for(i in 1:car$ID){

一种方法是使用plyr包和
d_ply()
函数。
d_ply()
需要一个data.frame作为输入。您还提供一列您希望对该数据进行切片和骰子分割。frame by可独立于其他数据进行操作。在本例中,您具有列ID。此特定函数不返回对象,因此可用于打印或以迭代方式生成charter等。以下是一个小的工作示例:

library(plyr)

dat <- data.frame(ID = rep(letters[1:3],2) , x = rnorm(6), y = rnorm(6))

d_ply(dat, "ID", function(x)
     write.table(x, file = paste(x$ID[1], "txt", sep = "."), sep = "\t", row.names = FALSE))

一种方法是使用plyr包和
d_-ply()
函数。
d_-ply()
需要一个data.frame作为输入。您还提供一列您希望对该数据进行切片和骰子分割。frame by可独立于其他数据进行操作。在本例中,您具有列ID。此特定函数不返回对象,因此可用于打印或以迭代方式生成charter等。以下是一个小的工作示例:

library(plyr)

dat <- data.frame(ID = rep(letters[1:3],2) , x = rnorm(6), y = rnorm(6))

d_ply(dat, "ID", function(x)
     write.table(x, file = paste(x$ID[1], "txt", sep = "."), sep = "\t", row.names = FALSE))

对于名为mtcars的数据帧,由mtcars$cyl分隔:

lapply(split(mtcars, mtcars$cyl), 
   function(x)write.table(x, file = paste(x$cyl[1], ".txt", sep = "")))

这将生成带有相应数据的“4.txt”、“6.txt”、“8.txt”。这应该比循环/子集更快,因为子集(拆分)是矢量化的。

对于名为
mtcars
的数据帧,由
mtcars$cyl
分隔:

lapply(split(mtcars, mtcars$cyl), 
   function(x)write.table(x, file = paste(x$cyl[1], ".txt", sep = "")))

这将产生“4.txt”、“6.txt”、“8.txt”以及相应的数据。这应该比循环/子集快,因为子集(拆分)是矢量化的。

您编写的代码很难解释。很难判断ID是否真的是您要使用的car中的一列。哪个数据框保存数据…car1?它和car之间有什么区别?您真正想写的是哪一个?它应该按列还是按行拆分?您在做什么ally希望文件名是什么?请更准确地描述您想要做什么。一个非常明显的问题涉及到您的myfile语句。所需文件名的“桥接”部分(将文件放在根目录中)是吗或者它应该是一个目录?告诉我们错误消息是什么可能也会有帮助。可能的重复:我为一个措词不当的问题道歉。我不知道如何在这个实例中显示数据或提供示例内容供您帮助。ID列有50个唯一的名称。@bill the“Bridge”是我试图使用的C驱动器上的一个目录。@John Car1和car是一个错误。它应该是所有人的车。@Chase,谢谢链接帮助人员没有意识到它是重复的。您编写的代码很难解释。很难说ID是否真的是您要使用的车中的一列。哪个数据框包含data…car1?它和car有什么区别?你真正想写的是哪一个?它应该按列还是按行分开?你真正想要的文件名是什么?请更准确地描述你想要做什么。一个非常明显的问题涉及到你的myfile语句。是“bridge”所需文件名的一部分(将文件放在根目录中)或者它应该是一个目录?告诉我们错误消息是什么可能也会有帮助。可能的重复:我为一个措词不当的问题道歉。我不知道如何在这个实例中显示数据或提供示例内容供您帮助。ID列有50个唯一的名称。@bill the“Bridge”是我试图处理的C驱动器上的一个目录。@John Car1和car是一个错误。它应该是所有人的车。@Chase,谢谢链接帮助没有意识到它是一个重复的目录。这很好。你认为有没有办法从文件中选择特定变量而不是所有变量?意思是,在这个示例中,你给出了一个X和Y,但假设您也有一个Z变量,但不希望它出现在最终输出中……您如何只选择要从此数据帧导出的X和Y?@Kerry-提供了另一个示例来跟进您的问题。不需要我的人!您提供的是对的。我只是不知道将[]放在哪里.谢谢你!非常感谢你,它工作得非常好。这非常好。你认为有没有办法从文件中选择特定的变量而不是所有的变量?意思是,在这个例子中,你给出了一个X和Y,但说你也有一个Z变量,但不希望它出现在最终输出中…你如何y选择要从此数据帧导出的X和y?@Kerry-提供了另一个例子来跟进你的问题。不需要我的人!你提供的是对的。我只是不知道把[]谢谢你们!非常感谢,它非常有效。太好了。这也很有效。我感谢你们给我的建议!非常感谢!太好了。这也很有效。我感谢你们给我的所有建议!非常感谢!