如何在多条件for循环中正确用print输出文件不符合条件的原因
问题解决:分别输出文件不符合条件的原因
你的原代码存在语法、函数用法和逻辑判断的问题,导致无法区分两种不符合条件的情况,下面是修正方案:
原代码的核心问题
- 循环语法错误:
for (i in files))多了一个右括号,且未用循环变量指代当前文件,直接操作files整个向量会出错 file.info用法错误:files$file_size是把文件名向量当成数据框处理,正确获取单个文件大小的方式是file.info(当前文件名)$size- 逻辑判断混乱:将两个条件合并在同一个
if中,无法区分大小不达标和不在列表中的情况
修正后的代码
# 假设files是存储文件名的字符向量 for (file in files) { # 获取当前文件的字节大小 current_size <- file.info(file)$size # 先判断是否不在geography列表中 if (!file %in% geography) { print(paste(file, "未包含在geography列表中")) next # 跳过后续判断,进入下一次循环 } # 再判断文件大小是否不满足要求 if (current_size <= 5) { print(paste(file, "文件大小不符合要求")) next } # 两个条件都满足时,读取文件 new_file <- read.csv(file) # 可在此添加对new_file的后续处理代码 }
说明
- 采用分步判断的方式,先检查文件是否在
geography列表,再检查大小,分别输出对应提示 file.info返回的大小单位是字节,若你的"5"是其他单位(如KB),需自行换算数值- 每个不符合条件的判断后用
next跳过循环剩余部分,避免执行后续代码
内容的提问来源于stack exchange,提问作者Nashe
相关产品推荐
相关产品推荐

