如何通过将文件名与列名匹配来提取数据

时间:2012-12-19 10:28:10

标签: r

应该很容易,但我无法做到。 我有很多文件,每个文件都按物种名称命名。我还有一个数据框,其中每列都以物种名称命名。我只是想从数据框中提取列,并在更改列名后将该列与相应的物种文件组合,比如说,'Common'可能在循环中,以便稍后比较colud比较所有物种。

Df的:

ID  Tilia_americana Fraxinus_americana  Ulmus_americana
1   23  32  32
2   21  34  35
3   20  33  32
4   19  33  36
5   23  23  34
6   22  34  37

抱歉,因为之前不具体。正如您所看到的,列名称是物种名称,此外,我还有三个具有物种名称的独立文件。第一个文件的标题是这样的:

Tilia_americana:

ID  Wie Rei Wee
1   2   4   3
2   4   3   4
3   3   2   5
4   5   5   2
5   6   3   4
6   7   4   3

从DF中提取Tilia_american列并将列名更改为'Common'并将其与Tilia_american文件组合后,输出应该是这样的:

ID  Wie Rei Wee Common
1   2   4   3   23
2   4   3   4   21
3   3   2   5   20
4   5   5   2   19
5   6   3   4   23
6   7   4   3   22

最后想要保存每个文件...谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用类似

的物种文件列表
files <- list.files( pattern = ".txt" )

假设这些文本文件的扩展名为.txt,并且该文件夹中没有其他文本文件。

species <- gsub( ".txt", "", files )

您可以删除该扩展程序,然后在Common data.frame中列出您的列名。

你现在可以构建一个循环(可能有更好的方法,比如lapply ......):

for( i in 1:length( files ) )
{
    x <- read.table( files[i], header = TRUE )
    x <- cbind( x, Common[ colnames( Common ) == species[i] ] )
    write.table( x, files[i], row.names = FALSE )
}

希望这能让你开始!