0

我有几个变量如下:

cats <- "some long text with info"
dogs <- "some long text with info"
fish <- "some long text with info"
....

我手动将这些变量的内容写入文本文件:

write.table(cats, "info/cats.txt", sep="\t")
write.table(dogs, "info/dogs.txt", sep="\t")
....

我阅读了这个问题的答案并尝试编写一个循环来自动写入文件。

所以我创建了一个列表:

lst <<- list(cats, dogs,fish, ....)

然后遍历列表:

for(i in seq_along(lst)) {
    write.table(lst[[i]], paste(names(lst)[i], ".txt", sep = ""), 
               col.names = FALSE, row.names = FALSE,  sep = "\t")
}

但上述迭代的输出是一个名为的文本文件.txt,它包含列表中最后一个变量的内容。

知道为什么上述循环不能按预期工作吗?

4

1 回答 1

6

请注意以下事项:

> cats <- "some long text with info"
> dogs <- "some long text with info"
> fish <- "some long text with info"
> lst <- list(cats, dogs,fish)  # not <<-
> names(lst)
NULL

当你创建你的列表时,你没有给它任何名字,所以你的循环没有任何东西可以使用。修复:

> names(lst) <- c("cats", "dogs", "fish")
于 2016-03-08T20:06:10.263 回答