2017-05-18 13 views
1

ランダムに生成された数値セットを固定フォーマットのテキストファイルに書きたいとします。しかし何らかの理由で、write.fwfが最初の列を右に書いただけで、他の列はすべて1つの余分な数字を得ました。どうすれば修正できますか?ありがとう!write.fwf()が固定幅セットに従わなかった理由

set.seed(1899) 

    library(sensitivity) 
    library(randtoolbox) 

    par_lower <- c(0.12, 0.13, 0.038, 0.017) 
    par_upper <- c(12.00, 13.00, 3.800, 1.700) 

    sample_size <- 5 

    lim_para8 <- c(par_lower[1], par_upper[1]) 
    lim_para9 <- c(par_lower[2], par_upper[2]) 
    lim_parb8 <- c(par_lower[3], par_upper[3]) 
    lim_parb9 <- c(par_lower[4], par_upper[4]) 

    par_rand <- parameterSets(par.ranges = list(lim_para8, lim_para9, 
               lim_parb8, lim_parb9), 
           samples = sample_size, method = "sobol") 

    par_rand 

    # write to file 
    library(gdata) 
    file2write <- paste("par.txt", sep = "") 
    write.fwf(par_rand, file = file2write, width = c(10, 10, 10, 10), colnames = FALSE) 

結果:私は

write.fwf(par_rand, file = file2write, width = c(10, 9, 9, 9), 
       colnames = FALSE, quote = FALSE, rownames = FALSE) 

に変更した場合は

 6.060 6.56500 1.91900 0.858500 
    9.030 3.34750 2.85950 0.437750 
    3.090 9.78250 0.97850 1.279250 
    4.575 4.95625 2.38925 0.227375 
    10.515 11.39125 0.50825 1.068875 

は、私はそれが私の作品は、以下のコードを試してみてください。このエラー

Error in write.fwf(par_rand, file = file2write, width = c(10, 9, 9, 9), : 
     'width' (9) was too small for columns: V4 
    'width' should be at least (10) 
+0

ちょうどそれを見て:あなたの最後の列は11の幅を持っています。 – KoenV

+0

私は知っていますが、それは 'write.fwf()'によって書かれました。私は10の幅しか持たない。ありがとう! – Tung

+0

答えを見てください。私は犯人と解決策を見つけたと思う。 – KoenV

答えて

1

を得ました。私はいくつかのフォーマットでテストし、すべてがうまくいった。両方のコードセグメントは4×10

幅の固定フォーマットのファイルを返すもちろんこれは、file2writeの定義にsepを設定するwrite.fwf

write.fwf(par_rand, file = "par2.txt", width = c(10, 10, 10, 10), colnames = FALSE, sep = "") 

write.fwf(par_rand, file = file2write, width = c(10, 10, 10, 10), colnames = FALSE, sep = "") 

で所望の出力を得るために動作しないことを意味します私はあなたが私はこれがあなたが望んでいるかどうかをお知らせください

write.fwf(par_rand, file = "par3.txt", width = c(10, 9, 9, 9), colnames = FALSE, sep = "") 

を望んでいたと思うと、次には、1×10および3x9と同じ生成されます。

+0

あなたは正しいです。 'sep =" "'は 'write.fwf'コマンドで見逃したものでした。ありがとうございました! – Tung

+0

私の喜び、私が助けることができてうれしい。 – KoenV

関連する問題