我不能在 r 中使用 tiff() 保存文件 for{}
I can´t save files using tiff() inside for{} in r
所以我有一个大文件,我做了一个循环来计算平均值并做图形:
for (i in c(25:28)) {
trait <- all_exp_1 %>%
group_by(Experiment,time) %>%
dplyr::summarise(across(i,~data.frame(Mean = mean(.,na.rm=TRUE),
N = length(.),
SD = sd(.,na.rm=TRUE),
Min = min(.,na.rm=TRUE),
Max = max(.,na.rm=TRUE),
Coeff.Variation = sd(., na.rm=TRUE)/mean(., na.rm=TRUE)*100))) %>%
pivot_longer(-maturacao & -Experimento) %>% ungroup()
file_name = paste("files/plot_",trait[[3]][[1]], ".tiff", sep="")
tiff(file=file_name, width =6 , height = 4, units = 'in', res = 200)
ggplot(trait,aes(x = maturacao, y =trait$value[[1]], fill = factor(Experimento))) +
geom_bar(position = "dodge", stat = "identity") +
theme() +
labs(fill = "Experiment") +
xlab('Time')+
ylab('Size (0 - 100)')
dev.off()
}
例如,对于特征 25 生成此文件:
Experiment time trait value$Mean $N $SD $Min $Max $Coeff.Variation
0 5 Tenderness 56.2 20 17.9 6 81 31.9
0 15 Tenderness 68.2 20 22.6 9 100 33.1
0 25 Tenderness 61.2 20 21.7 12 97 35.4
1 5 Tenderness 61.3 72 25.0 0 100 40.8
1 15 Tenderness 65.3 72 21.2 5 100 32.4
1 25 Tenderness 72.6 72 22.8 8 100 31.4
但是保存的图形是空白的,但是,当我 运行 对 for{}
之外的图形使用相同的代码时,代码可以完美运行。有什么建议吗?
一个解决方案是将您的地块存储在列表中,然后 print()
它们。
看一个小例子:
首先:让我们将地块保存到列表中
library(ggplot2)
list <- list()
for (i in 1:3) {
g <- ggplot(iris, aes(Sepal.Length,Sepal.Width)) +
geom_point()
list[[i]] <- g
}
现在我们的列表中充满了阴谋。现在,让我们将它们保存到 tiff
.
for (i in 1:3) {
file_name = paste("iris_plot_", i, ".tiff", sep="")
tiff(file_name)
print(list[[i]])
dev.off()
}
所以我有一个大文件,我做了一个循环来计算平均值并做图形:
for (i in c(25:28)) {
trait <- all_exp_1 %>%
group_by(Experiment,time) %>%
dplyr::summarise(across(i,~data.frame(Mean = mean(.,na.rm=TRUE),
N = length(.),
SD = sd(.,na.rm=TRUE),
Min = min(.,na.rm=TRUE),
Max = max(.,na.rm=TRUE),
Coeff.Variation = sd(., na.rm=TRUE)/mean(., na.rm=TRUE)*100))) %>%
pivot_longer(-maturacao & -Experimento) %>% ungroup()
file_name = paste("files/plot_",trait[[3]][[1]], ".tiff", sep="")
tiff(file=file_name, width =6 , height = 4, units = 'in', res = 200)
ggplot(trait,aes(x = maturacao, y =trait$value[[1]], fill = factor(Experimento))) +
geom_bar(position = "dodge", stat = "identity") +
theme() +
labs(fill = "Experiment") +
xlab('Time')+
ylab('Size (0 - 100)')
dev.off()
}
例如,对于特征 25 生成此文件:
Experiment time trait value$Mean $N $SD $Min $Max $Coeff.Variation
0 5 Tenderness 56.2 20 17.9 6 81 31.9
0 15 Tenderness 68.2 20 22.6 9 100 33.1
0 25 Tenderness 61.2 20 21.7 12 97 35.4
1 5 Tenderness 61.3 72 25.0 0 100 40.8
1 15 Tenderness 65.3 72 21.2 5 100 32.4
1 25 Tenderness 72.6 72 22.8 8 100 31.4
但是保存的图形是空白的,但是,当我 运行 对 for{}
之外的图形使用相同的代码时,代码可以完美运行。有什么建议吗?
一个解决方案是将您的地块存储在列表中,然后 print()
它们。
看一个小例子:
首先:让我们将地块保存到列表中
library(ggplot2)
list <- list()
for (i in 1:3) {
g <- ggplot(iris, aes(Sepal.Length,Sepal.Width)) +
geom_point()
list[[i]] <- g
}
现在我们的列表中充满了阴谋。现在,让我们将它们保存到 tiff
.
for (i in 1:3) {
file_name = paste("iris_plot_", i, ".tiff", sep="")
tiff(file_name)
print(list[[i]])
dev.off()
}