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 at 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 at
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 at
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 at
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 at 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 at 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.
>>>>
>>>
>