R - 按编号列出的名单

时间:2014-10-18 23:19:33

标签: r list sorting

我已经组装了一个包含100个父列表的嵌套列表,每个列表包含多个(n = 34)个字符串。我的目标是将这100个父项列表中的每一个写入不同的文本文件。我已经能够成功输出文本文件(代码包含在下面);但是,订单不正确。

当我列出父列表中包含的元素时,我得到以下内容:

ls(ctl_out)
   [1] "ctl001" "ctl002" "ctl003" "ctl004" "ctl005"
  ...
  [96] "ctl096" "ctl097" "ctl098" "ctl099" "ctl100"

上面列出的顺序是正确的(从001开始到100结束)。但是,当我要求R订购列表并打印第一个元素时,我得到以下内容:

ctl_out[order(ctl_out[1]))]
  $ctl067

因此,当我打开以文件名ctl001.txt保存的文本文件时,它包含#067而不是#001的所有信息。

是否有人熟悉重新排序或排序列表顺序的方法,以便ctl_out[order(ctl_out[1])]产生$ctl001而不是$ctl067

作为参考,我正在使用以下代码开发父ctl_out列表(在清理我的环境之后,它只包含100个父列表):

ctl_out <- as.list.environment(environment())

然后,我使用以下代码将100个父列表中的每一个写入单个文本文件中:

for(i in seq_along(ctl_out)) {
   write.table(ctl_out[i], paste0('ctl', sprintf('%03d', i), '.txt'),
               row.names = FALSE, col.names = FALSE, sep = '\t', quote = FALSE)
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

为了将这个问题标记为已回答,我想将@ wush978归功于之前评论中的明确答案。

要修复此错误,请在使用以下内容构建ctl_out列表后

ctl_out <- as.list.environment(environment())

然后按如下方式应用订单功能:

ctl_out <- ctl_out[order(names(ctl_out))]

然后可以导出生成的有序列表(ctl_out),以便将每个列表(001-100)保存为单独编号的文本文件:

for(i in seq_along(ctl_out)) {
   write.table(ctl_out[i], paste0('ctl', sprintf('%03d', i), '.txt'),
   row.names = FALSE, col.names = FALSE, sep = '\t', quote = FALSE)
}

再次感谢。