使用循环写入 R 中的文件
Write to files in R using a loop
我有几个变量如下:
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")
....
我阅读了 this question 的答案并尝试编写一个循环来自动写入文件。
所以我创建了一个列表:
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
的文本文件,它包含 last 变量的内容 在列表中。
知道为什么上面的循环没有按预期工作吗?
注意以下几点:
> 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")
我有几个变量如下:
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")
....
我阅读了 this question 的答案并尝试编写一个循环来自动写入文件。
所以我创建了一个列表:
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
的文本文件,它包含 last 变量的内容 在列表中。
知道为什么上面的循环没有按预期工作吗?
注意以下几点:
> 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")