为什么在R中导致格式'%d无效?

时间:2012-05-28 14:19:04

标签: r

下面给出的代码是将二进制文件从float32转换为16b,比例因子为10.我收到%d无效的错误。

setwd("C:\\2001")
for (b in paste("data", 1:365, ".flt", sep="")) {
   conne <- file(b, "rb")
   file1<- readBin(conne, double(), size=4,  n=360*720, signed=TRUE)
   file1[file1 != -9999] <- file1[file1 != -9999]*10
   close(conne)
   fileName <- sprintf("C:\\New folder (11)\\NewFile%d.bin", b)
   writeBin(as.integer(file1), fileName, size = 2) 
}

结果:

Error in sprintf("C:\\New folder (11)\\NewFile%d.bin",  : 
invalid format '%d'; use format %s for character objects

我根据R.But的建议使用了%s来自1:365的文件是完全空的

1 个答案:

答案 0 :(得分:5)

%d是字符串中整数变量的占位符。因此,当您使用sprintf(%d, var)时,var必须是整数。

在您的情况下,变量b是一个字符串(或一个字符对象)。因此,您使用占位符表示字符串变量%s

现在,如果您的文件为空,则代码中的其他位置一定有问题。你应该问另一个更具体的问题。