5

以下のコードは、バイナリ ファイルを 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の提案どおりに使用 %sしましたが、1:365のファイルは完全に空でした

4

1 に答える 1

8

%d文字列内の整数変数のプレースホルダーです。したがって、 を使用する場合、は整数sprintf(%d, var)でなければなりません。var

あなたの場合、変数bは文字列(または文字オブジェクト)です。したがって、文字列変数のプレースホルダーを使用します。これは%s.

ファイルが空の場合、コードのどこかに問題があるはずです。より具体的な別の質問をする必要があります。

于 2012-05-28T14:31:44.253 に答える