2015-09-26 54 views
1

我是一个初学者编码R. 我有一个列中有60个唯一ID,每个唯一ID有30个条目,我想编写一个自动为每个唯一ID创建单独文件的代码。 此代码工作了一个IDR:将与每个独特事件相关的数据写入一个单独的文件for循环

unique(src$ID) 
ID2<- subset(src, ID=='099857') 
write.csv(pat2,file= "D:/R/ID2.csv") 

当我尝试循环使用下面的代码吧。

for (i in 1:length(unique(src$ID))) 
{ unique(src$ID) 
    id<- subset(src, ID== "i") 
    paste(id) 
    write.csv(i,file="D:R/i.csv") 
} 

我得到一个文件,只计算所有的唯一ID(60)并将它们粘贴到Excel表格中。

试图将单个ID的结构合并到自动循环中。

预期输出 - 60个唯一文件,每个文件有30个条目。

有没有人有任何建议? 谢谢。

+0

看起来好像你正试图保存到特定的目录在你的'' 'write.csv(i,file =“D:R/i.csv”)'''如果是,最好使用''setwd(“D:R/“)'''你可以在''''''厕所之前做这个页。这样,在'''write.csv'''中你的文件名参数就会像@Chris所说的那样成为'''paste0(i,“.csv”)'''。 (唯一(src $ ID),FUN =函数(x,df = src)write.csv(子集(df,ID == x),file = paste0(“D:/ –

+0

) R /“,x,”。csv“)))'' – holzben

回答

2

你迭代的数字矢量(1:长度(独特的(SRC $ ID)),但在循环中,您是指我作为一个字符向量“我”尝试将其更改为:

for(i in unique(src$ID)) { 
ID2 <- subset(src, ID == i) 
write.csv(ID2, file = paste0("D:/R/",i,".csv")) 
} 

...如果包含ID列的名称是“SampleID”,那么你应该将其更改为:

for(i in unique(src$SampleID)) { 
    ID2 <- subset(src, SampleID == i) 
    write.csv(ID2, file = paste0("D:/R/",i,".csv")) 
    } 
+0

Chris,谢谢。该代码当前正在给出一个包含所有暗淡名称但没有数据的输出文件。你认为使用嵌套for循环会有帮助吗?是的,我希望能够通过字符进行循环,因为ID是字母数字。 –

+0

你可以给我这个命令的结果:head(src)....我在你的第一篇文章中看到你正试图将pat2中的数据写入csv文件。你确定你想要pat2的数据而不是来自ID2的数据(我认为它是src数据帧的一个子集)。 – Chris

+0

#PAT2 独特(SRC $ SampleID) PAT2 < - 子集(SRC,SampleID == 'R4683_58min') write.csv(PAT2,文件= “d:/R/pat2.csv”) 这是一个代码适用于大数据集中的单个唯一sampleID, 我正在尝试使用循环,以便它自动查询“SampleID ==”并将数据子集保存在单独的csv文件中的相同名称下。 希望这有助于。再次,非常感谢你的时间。 –

相关问题