library(terra) path1 <- dir('G:/ERA5hr/P/1/', pattern = '*.tif', full.names = TRUE) path2 <- dir('G:/ERA5hr/ZUST/1/', pattern = '*.tif', full.names = TRUE) path3 <- dir('G:/ERA5hr/ut_750/1/', pattern = '*.tif', full.names = TRUE) for (i in 1:length(path1)) { print(path1[i]) # 读取三个.tif文件 p <- rast(path1[i]) zust <- rast(path2[i]) ut <- rast(path3[i]) # 进行计算 file_data <- ifelse(zust < ut, 0, (p / 9.8) * zust ^ 3 * (1 - ut / zust) * (1 + (ut / zust) ^ 2)) # 输出为新的.tif文件 output_path <- paste('G:/ERA5hr/Q/Q750/1/', substr(path1[i], 15, 28), '.tif', sep = '') writeRaster(file_data, output_path, overwrite = TRUE, format = "GTiff") } 上面代码if语句还能修改吗
时间: 2024-03-15 09:47:33 浏览: 67
可以修改。当前的`ifelse()`函数中的条件判断是`zust < ut`,如果条件不满足就执行后面的计算,否则结果为0。如果需要修改条件判断,只需要修改`ifelse()`函数中的条件判断即可。比如,如果需要判断`zust > ut`,可以将条件修改为`zust > ut`。
下面是修改后的代码示例:
```
library(terra)
path1 <- dir('G:/ERA5hr/P/1/', pattern = '*.tif', full.names = TRUE)
path2 <- dir('G:/ERA5hr/ZUST/1/', pattern = '*.tif', full.names = TRUE)
path3 <- dir('G:/ERA5hr/ut_750/1/', pattern = '*.tif', full.names = TRUE)
for (i in 1:length(path1)) {
print(path1[i])
# 读取三个.tif文件
p <- rast(path1[i])
zust <- rast(path2[i])
ut <- rast(path3[i])
# 进行计算,修改条件判断为zust > ut
file_data <- ifelse(zust > ut, (p / 9.8) * zust ^ 3 * (1 - ut / zust) * (1 + (ut / zust) ^ 2), 0)
# 输出为新的.tif文件
output_path <- paste('G:/ERA5hr/Q/Q750/1/', substr(path1[i], 15, 28), '.tif', sep = '')
writeRaster(file_data, output_path, overwrite = TRUE, format = "GTiff")
}
```
请注意,修改条件判断后,如果需要修改计算公式,请确保公式的正确性。
阅读全文