2012-05-28 52 views
-2

我想从float32转换为16b,比例因子为10.我应该得到大小为507kb(720 * 360 * 2)而不是131kb的文件。任何帮助?我得到131 kb而不是507 kb

dir1 <- list.files("C:\\New folder (13)", "*.img", full.names = TRUE) 
results <- list() 
for (.files in seq_along(dir1)){ 
    file2 <- readBin(dir1[.files], double(), size = 4, n = 360*720, signed = TRUE) 
    results[[length(results) + 1L]] <- file2[file2 != -9999]*10 
    fileName <- sprintf("C:\\SWdown_200001_%d.bin", .files) 
    writeBin(as.integer(results[[.files]]), fileName, size = 2) 
} 

回答

2

'file2'中等于-9999的每个元素都不会出现在结果[[。files]]中。看起来'file2'中大约3/4的元素等于这个值。也许你想为这些元素分配一个不同的值,而不是在分配给结果[[...]]时将其删除。

做你想做什么,试试这个:

file2[file2 != -9999] <- file2[file2 != -9999]*10 
results[[length(results) + 1L]] <- file2; 
+0

其实我想从10乘以排除他们如何解决这个 –

+0

见编辑答案。 –

+1

或'results [[length(results)+ 1L]] - ifelse(file2!= - 9999,file2 * 10,-9999)' –