在R中使用空向量和paste0的结果很奇怪

时间:2015-01-30 04:28:05

标签: r

我正在编写一个基于数据帧内容生成文件名向量的函数。 它非常适用于非空数据帧,但会为空数据帧产生奇怪的结果:

> head(c)
  id nobs
1  1  117
2  2 1041
3  3  243
4  4  474
5  5  402
6  6  228
> cc <- c[c$nobs > 1000, ]
> cc
     id nobs
2     2 1041
154 154 1095
248 248 1005
> paste0("specdata", "/", sprintf("%03d", cc$id), ".csv")
[1] "specdata/002.csv" "specdata/154.csv" "specdata/248.csv"
> cc <- c[c$nobs > 5000, ]
> paste0("specdata", "/", sprintf("%03d", cc$id), ".csv")
[1] "specdata/.csv"

有没有人知道它为什么会产生&#34; specdata / .csv&#34;而不是空矢量? (目前我使用if(nrow(cc))返回一个空向量,但我希望必须有更好的方法来做到这一点)

1 个答案:

答案 0 :(得分:1)

paste0用于连接字符串。

paste0("specdata", "/", sprintf("%03d", cc$id), ".csv")

在您的情况下,sprintf("%03d", cc$id)将返回空字符串,因为cc为空。 在这里,您正在连接"spedata", "/", "", ".csv" 你得到的结果是预期的。