我已经组装了一个包含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)
}
提前致谢。
答案 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)
}
再次感谢。