使用列表过滤数据帧并在多个文件中写入输出

时间:2015-07-12 18:41:42

标签: r dataframe output filtering

我是r的新手,我正在努力完成这项任务:

我有一个数据框,如:

                  V1       V2    V3   V4         V5       V6
1   Maxillaria_grayi -77.9600 -2.35 gbif 2002-04-12 22:00:00
2   Maxillaria_grayi -77.6800 -5.67 gbif 1998-03-22 23:00:00
3   Maxillaria_grayi -76.8333 -7.00 gbif 1998-03-22 23:00:00
4   Maxillaria_grayi -78.6700 -4.27 gbif 1994-02-16 23:00:00
5   Maxillaria_grayi -78.6100 -3.81 gbif 1988-05-15 22:00:00
6 Maxillaria_grandis -77.5900 -0.09 gbif 1979-10-29 23:00:00

但更多条目。

另一方面,我有一个清单:

[[1]]
[1] "Maxillaria_grayi"

[[2]]
[1] "Maxillaria_grandis"

[[3]]
[1] "Maxillaria_huebschii"

[[4]]
[1] "Maxillaria_dalessandroi"

我正在尝试的是为我的列表中的每个条目提取我的矩阵中包含的信息,并将其作为单独的输出导出。

我写了这段代码:

for (n in 1:144){
  x <-  Maxi.matrix[Maxi.matrix$V1 == Maxi[[n]],]
  print(x)
  for(i in seq_along(x)) {
    write.table(x[[i]], paste(Maxi[[n]], ".txt", sep = ""), col.names=F, row.names=F)
  }
}

第一部分,如果工作(我认为),因为它似乎为列表中的每个条目检索与列表记录相关联的矩阵中的所有记录。

print(x)
<0 rows> (or 0-length row.names)
                      V1        V2        V3   V4         V5       V6
1022 Scuticaria_hadwenii -43.23444 -22.41028 gbif 2009-11-17 23:00:00
1023 Scuticaria_hadwenii -41.90000 -13.30000 gbif 1992-01-01 23:00:00
1024 Scuticaria_hadwenii -45.86667 -23.63333 gbif 1983-12-09 23:00:00
                       V1     V2    V3   V4         V5       V6
1025 Scuticaria_salesiana -78.37 -5.25 gbif 1996-08-24 22:00:00
1026 Scuticaria_salesiana -78.61 -3.81 gbif 1985-07-24 22:00:00
1027 Scuticaria_salesiana -78.52 -3.43 gbif 1978-08-17 23:00:00

However, the last part of he script (output file) is not working. The loop save a file for every item in the list (e.g. Maxillariella_sanguinea.txt), but the content of the table is not the desired one: e.g.

"22:00:00"
"22:00:00"
"22:00:00"
"22:00:00"
"22:00:00"
"23:00:00"
"22:00:00"
"23:00:00"
"23:00:00"
"23:00:00"

可以请有人帮我一把吗?

谢谢! :)

0 个答案:

没有答案