在R中如何基于星期几使用if else判断导出不同CSV文件
问题原因
你遇到的报错是因为ifelse()是向量化运算函数,设计用途是输入一个向量,返回和输入长度一致的结果向量。而write.csv()属于执行IO操作的函数,运行后没有返回值(返回值为NULL),不满足ifelse()的返回要求,因此触发了长度不匹配的错误。
正确实现方案
推荐使用R的标准分支控制语句if{}else{}实现需求,同时建议使用数字形式的星期标识避免不同系统的语言差异导致判断失效(%w格式化参数返回值为0~6的数字,0代表周日,6代表周六)。
方案1:分支中直接执行导出
if (strftime(Sys.Date(), "%w") == 6) { write.csv(df1, "data-today.csv", quote = FALSE, row.names = FALSE) } else { write.csv(df2, "data-today.csv", quote = FALSE, row.names = FALSE) }
方案2:先选数据再统一导出(代码更简洁)
# 先根据判断选择要导出的数据集 target_df <- if (strftime(Sys.Date(), "%w") == 6) df1 else df2 # 统一执行导出操作 write.csv(target_df, "data-today.csv", quote = FALSE, row.names = FALSE)
如果你的运行环境确定是英文系统,也可以沿用你原来的星期判断逻辑替换if后的判断条件:format(Sys.time(), "%a") == "Sat"。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

