[R] Write text file in Fortran format

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Wed Sep 21 18:12:42 CEST 2022


Hello,

You forgot to cc the list.

Here is a solution, I believe the comments explain the several steps.
It's a matter to read in the file, separate the table from the rest, 
update the 3rd column, assemble the pieces back together and write to file.


# this path depends on the OP's system
path <- "~/Temp"
fl <- list.files(path, pattern = "Air.txt", full.names = TRUE)
# read the file as text
txt <- readLines(fl)

# find lines starting with an asterisk
i <- grep("^\\*", txt)
# keep the other lines
txt_table <- txt[-i]
# find the lines starting or after the first blank line
j <- which(seq_along(txt_table) >= which(txt_table == ""))
# keep the other lines
txt_table <- txt_table[-j]
txt_table <- trimws(txt_table)

df1 <- read.table(text = txt_table)
# multiply 3rd column by 2
df1[[3]] <- 2*df1[[3]]

# format the table's lines to write them back to file
fmt <- "%14.5f %13.5f %13.5f %8.2f %8.2f %8.2f %7s %8s %10s %9s %9d"
new_data <- sprintf(fmt,
                     df1[[1]], df1[[2]], df1[[3]], df1[[4]],
                     df1[[5]], df1[[6]], df1[[7]], df1[[8]],
                     df1[[9]], df1[[10]], df1[[11]])

j <- which(seq_along(txt) >= which(txt == ""))
# assemble the header, the table and the footer
txt_new <- c(txt[i], new_data, txt[j])

# this is not in the question,
# I'm not rewriting the original
fl2 <- file.path(dirname(fl), "Air2.txt")
writeLines(txt_new, fl2)



Hope this helps,

rui Barradas

Às 15:55 de 21/09/2022, javad bayat escreveu:
> Dear Rui;
> 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, 16:46 Rui Barradas, <ruipbarradas using sapo.pt> wrote:
> 
>> Hello,
>>
>> The attached file ends with R-Help's end message. This is unrelated to
>> computer languages, Fortran, R or other.
>>
>> And there is no such thing as a Fortran format.
>>
>> Can you please describe the problem you have?
>>
>> Rui Barradas
>>
>> Às 07:09 de 21/09/2022, javad bayat escreveu:
>>
>



More information about the R-help mailing list