我试图保存 for 循环的结果,其中每个循环选择 tibble 的一个子集,然后适合这个子集。我有 150 个 txt 文件,我使用以下方法将其加载到数据框中:
filelist = list.files(pattern = ".*.txt")
files <- stringr::str_sort(filelist, numeric = TRUE)
combined_files <- readr::read_delim(files, col_names = FALSE, id = "path")
names(combined_files) <- c("ID","f", "Re", "Im")
这给了我一个数据框,其中每个文件的数据依次列出。
然后,我在 for 循环中包含一条语句,该语句采用与每个文件对应的该数据帧的子集:
for (i in filter1$ID)
{
#Define total Z and calculate w
filter2 <- tibble(filter1$ID == i, filter1$f, filter1$Re, filter1$Im)
names(filter2) <- c("ID", "f", "Re", "Im")
for 循环似乎适用于拟合方面,但是当我尝试使用以下方法在循环末尾保存结果时:
write.csv(fit_dataframe, file = glue::glue("model_{i}.csv"))
我没有得到任何输出。有没有更简单的方法来做到这一点?很高兴提供更多信息。
我还是有点不清楚你到底想做什么。
如果问题实际上在于将结果写入文件,那么您的代码应该可以正常工作。
MWE:
library(tidyverse)
d <- data.frame(ID = rep(1:10, each=10),
x = rnorm(100, 20, 4)) |>
mutate(y = x*1.2+rnorm(100))
for (i in unique(d$ID)) {
write.csv(d[d$ID==i,], file = glue::glue("model_{i}.csv"))
}
> list.files(pattern="model")
[1] "model_1.csv" "model_10.csv" "model_2.csv" "model_3.csv" "model_4.csv" "model_5.csv" "model_6.csv" "model_7.csv"
[9] "model_8.csv" "model_9.csv"
因此,如果您确定没有生成文件,则错误一定介于两者之间。另请注意,如果这是您所期望的,则
write.csv
将不会产生控制台输出。