【问题标题】:variable file names for read.csv in RR中read.csv的变量文件名
【发布时间】:2014-07-29 18:05:46
【问题描述】:

这可能是一个非常常见的问题,所以我特意寻找一个优雅的或至少比我的更简单的解决方案。

我有从 001.csv 到 200.csv 的一系列文件。我需要能够在函数中选择我想要的那些,以便传递一个列表并且只选择适当的列表。

function(filenumbers = 1:200 {
}

我创建了一组非常丑陋的 if 语句,以在必要时提供“00”和“0”前缀:

for (i in filenumbers) {
if (i < 10) {filename<-paste("00", i, ".csv", sep ="")
} else if (i < 100) {filename<-paste("0", i, ".csv", sep="")
} else {filename<-paste(i, ".csv", sep="")}
print(filename)
}

这确实输出了正确的名称列表,但似乎必须有更好的方法来处理这个问题。 我对 R 有点陌生,所以任何过度解释都将不胜感激。

【问题讨论】:

    标签: r csv


    【解决方案1】:

    这将很好地使用sprintf 函数。它有许多格式化选项,但对于这种情况,我会使用

    sprintf("%03d.csv", 1:200)
    
    #   [1] "001.csv" "002.csv" "003.csv" "004.csv" "005.csv"
    #   [6] "006.csv" "007.csv" "008.csv" "009.csv" "010.csv"
    #     ...
    #  [96] "096.csv" "097.csv" "098.csv" "099.csv" "100.csv"
    # [101] "101.csv" "102.csv" "103.csv" "104.csv" "105.csv"
    #     ...
    # [191] "191.csv" "192.csv" "193.csv" "194.csv" "195.csv"
    # [196] "196.csv" "197.csv" "198.csv" "199.csv" "200.csv"
    

    【讨论】:

      【解决方案2】:

      formatC()paste0() 的组合应该可以工作:

      paste0(formatC(1:200, width = 3, format = "d", flag = 0), ".csv")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-19
        • 2011-10-10
        • 2020-05-14
        • 2016-10-14
        • 2016-09-09
        • 1970-01-01
        相关资源
        最近更新 更多