我正在编写一个基于数据帧内容生成文件名向量的函数。 它非常适用于非空数据帧,但会为空数据帧产生奇怪的结果:
> 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))返回一个空向量,但我希望必须有更好的方法来做到这一点)
答案 0 :(得分:1)
paste0用于连接字符串。
paste0("specdata", "/", sprintf("%03d", cc$id), ".csv")
在您的情况下,sprintf("%03d", cc$id)
将返回空字符串,因为cc
为空。
在这里,您正在连接"spedata", "/", "", ".csv"
你得到的结果是预期的。