[R] Write text file in Fortran format

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Thu Sep 22 10:50:59 CEST 2022


Hello,

Are those lines at the begining of the file?

Rui Barradas

Às 06:44 de 22/09/2022, javad bayat escreveu:
> Dear all; Many thanks for your useful comments and codes.
> I tried both Rui's and Jim's codes.
> Jim's codes gave an error as below:
> "Error in substr(inputline, 1, begincol3 - 1) :
>    object 'inputline' not found"
> I don't know what's wrong.
> The Rui's codes worked correctly for the attached file. But I have edited
> that file and removed 2 last lines from the file because I could not read
> it into R.
> These 2 lines were:
> "
> ** CONCUNIT ug/m^3
> ** DEPUNIT g/m^2
> "
> When I tried to run the code for my file that has these 2 lines at the end,
> it gave me this error:
> "
>> df1 <- read.table(text = txt_table)
> Error in read.table(text = txt_table) : no lines available in input
> "
> The codes before the "df1 <- read.table(text = txt_table)" were run
> correctly.
> Sincerely
> 
> 
> 
> On Thu, Sep 22, 2022 at 6:58 AM javad bayat <j.bayat194 using gmail.com> wrote:
> 
>> Dear all;
>> I apologise, I didn't know that I have to cc the list.
>> Thank you Mr Rui for reminding me.
>> Let me clarify more.
>> I have no knowledge of the FORTRAN language. The text file that has been
>> attached is a model's output file and I know that the format is in FORTRAN.
>> I want to write a text file exactly similar to the attached text file using
>> R programming.
>> The steps below explain my goal:
>> 1- Read the text file without the first 8 and last 2 rows as a dataframe.
>> Maybe I have removed the last 2 lines, but at the end it had 2 lines
>> similar the first 8 lines which starts with asterisk.
>> 2- Double the 3rd column values (or multiply by specific number).
>> 3- Insert the removed first 8 lines of the original text file as header in
>> the dataframe.
>> 4- Insert the removed last 2 lines of the original text file at the end of
>> dataframe.
>> 5- Write the dataframe as a new text file exactly similar to the original
>> text file.
>>
>> I have used excel but when I save it as text file, the format changes and
>> is not similar to the attached text file.
>> I will try all your codes in a few hours, cause I am out of office.
>> Sincerely yours.
>>
>>
>>
>> On Thu, 22 Sep 2022, 04:20 Richard O'Keefe, <raoknz using gmail.com> wrote:
>>
>>> Oh, so you want to WRITE a file *like* that.
>>> Use ?sprintf.
>>> (3(1X,F13.5),3(1X,F8.2),3X,A5,2X,A8,2X,A5,5X,A8,2X,I8)
>>>
>>> Fortran sprintf
>>> 1X      a space
>>> 3X      3 spaces
>>> F13.5   %13.5f
>>> F8.2    %8.2f
>>> A5      %5s
>>> A8      %8s
>>> I8      %8d
>>> 3(...)  the translation of ... written 3 times
>>>
>>> We can simplify 1X,F13.5 to F14.5
>>> Here's the sprintf() equivalent of the Fortran format,
>>> except you'll need to change the dots to spaces.
>>>
>>> "%14.5f%14.5f%14.5f%9.2f%9.2f%9.2f...%5s..%8s..%5s.....%8s%10d\n
>>>
>>> On Thu, 22 Sept 2022 at 04:17, javad bayat <j.bayat194 using gmail.com> wrote:
>>>
>>>> Dear Rasmus;
>>>> I have no knowledge of the FORTRAN language. The text file that has been
>>>> attached is a model's output file and I know that the format is in
>>>> FORTRAN.
>>>> I want to write a text file exactly similar to the attached text file
>>>> using
>>>> R programming.
>>>> The steps below explain my goal:
>>>> 1- Read the text file without the first 8 and last 2 rows as a dataframe.
>>>> 2- Double the 3rd column values (or multiply by specific number).
>>>> 3- Insert the removed first 8 rows of the original text file as header in
>>>> the dataframe.
>>>> 4- Insert the removed last 2 rows of the original text file at the end of
>>>> dataframe.
>>>> 5- Write the dataframe as a new text file exactly similar to the original
>>>> text file.
>>>>
>>>> I have used excel but when I save it as text file, the format changes and
>>>> is not similar to the attached text file.
>>>> Sincerely
>>>>
>>>> On Wed, 21 Sep 2022, 18:17 Rasmus Liland, <jral using posteo.no> wrote:
>>>>
>>>>> Dear Javad,
>>>>>
>>>>> Perhaps you were looking to read the
>>>>> table in Air.txt (is this Fortran
>>>>> format?) into R?
>>>>>
>>>>>          b <- readLines("Air.txt")  # The text MIME attachment w/Mailman
>>>>> footer ...
>>>>>          b <- b[1:(which(b=="")-1)]  # Remove the odd Mailman footer (at
>>>>> end of df)
>>>>>          idx <- max(grep("^\\*", b))+1  # Start of df after header uline
>>>>>          header <- tolower(strsplit(gsub("  +", "_", gsub("\\*", "",
>>>>> b[idx-2])), "_")[[1]])
>>>>>          b <- read.table(text=b[-(1:idx)], header=F)
>>>>>          colnames(b) <- header[header!=""]
>>>>>          b <- b[,sapply(b, \(i) length(unique(i)))>1]  # Remove constant
>>>>> cols
>>>>>
>>>>> str(b)
>>>>>
>>>>>          'data.frame':   31324 obs. of  6 variables:
>>>>>           $ x           : num  583500 584000 584500 585000 585500 ...
>>>>>           $ y           : num  3018700 3018700 3018700 3018700 3018700
>>>> ...
>>>>>           $ average conc: num  32.8 33.1 33.4 33.5 33.6 ...
>>>>>           $ zelev       : num  0 0 0 0 0 0 0 0 0 0 ...
>>>>>           $ zhill       : num  0 0 0 0 0 0 0 0 0 0 ...
>>>>>           $ date(conc)  : int  16101706 16101706 16101706 16101706
>>>> 16101706
>>>>> ...
>>>>>
>>>>> Best,
>>>>> Rasmus
>>>>>
>>>>> ______________________________________________
>>>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>> PLEASE do read the posting guide
>>>>> http://www.R-project.org/posting-guide.html
>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>
>>>>
>>>>          [[alternative HTML version deleted]]
>>>>
>>>> ______________________________________________
>>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>>
>



More information about the R-help mailing list