2012-02-12 38 views
2

我遇到了一个与this one非常相似的问题,但涉及程度稍高。如何利用文件名信息作为R中的一个因子

我有一堆csv文件,每个文件记录特定品种的特定复制品的50个观测值。

这些文件被命名为Genotype_Rep.csv,并且我已经能够弄清楚如何从文件名中提取“Genotype”和“Rep”,这要感谢上面提到的解决方案。

但是因为每个csv文件都有50条记录,所以我需要将Genotype添加到每行,这在上述解决方案中不起作用。

例子:

#Assume that the names of the files in the wd has been assigned to 'filenames'. 
#Here's a dummy version: 

filenames <- c("A_1.csv", "A_2.csv", "B_1.csv", "B_2.csv") 

# extract ID from filename 
ids <- gsub("([A-Z])_[0-9].csv", "\\1", filenames) 

import <- mdply(filenames, read.csv) 
import$ID <- IDs[import$Var1] 
import$Var1 <- NULL 

这工作真的很好,当每个文件都有一个观察,而不是当我需要将其添加到几行。我毫不怀疑这很简单,但如果有人能够帮助我,那会很棒。

+0

你能澄清一下吗?是“行”==“行”? “......我需要将它添加到几行......”中的“它”究竟是什么? – 2012-02-12 22:17:20

回答

1

当我测试mdply()从文件中读取多个data.frames时,包含文件索引的列是“X1”,而不是“Var1”。因此,尝试用

import$ID <- ids[import$X1] 
import$X1 <- NULL 

更换

import$ID <- IDs[import$Var1] 
import$Var1 <- NULL 

(我也想通你想用的 “IDS”,而不是 “标识”。)

+0

是的,你是正确的,但它并没有解决我的根本问题...只要文件数量,导入仍然是一个列表。我需要一种方法将文件信息添加到新数据框中的每一行 – alexwhan 2012-02-13 01:07:58

+0

也许您可以显示导入内容的样子? – flodel 2012-02-13 01:17:18

+0

对不起flodel,我刚开始研究这个,并意识到你完全正确。非常感谢! – alexwhan 2012-02-13 02:48:09

相关问题