[R-br] Criar um dataframe pela combinação de duas linhas de informação em *txt

ASANTOS alexandre.santos em cas.ifmt.edu.br
Seg Mar 30 12:03:25 -03 2020


Prezados membros do r-br,

Eu gostaria de criar um novo data frame à partir de output de uma 
análise em *txt empregando o pacote *tidyverse*, sendo:

library(tidyverse)

#Arquivo original
https://www.dropbox.com/s/2f13c2wb66zfrmr/result.txt?dl=0

#Faço a leitura do arquivo
myfile<-read_lines("result.txt")

#Separo o nome do arquivo
filename<-myfile[1]
filename<-gsub("\\..*","",filename)
filename
#[1] "sample_107"

#Então removo a primeira linha que só tem a informação do nome do 
arquivo que o originou
myfile<-myfile[-1]


#Estrutura parcial do arquivo myfile
#
head(myfile)
#[1] "lca: 84%"
#[2] "left=475, right=586, top=0, bottom=527, obj_id=0, obj=lca "
#[3] "lca: 82%"
#[4] "left=548, right=553, top=0, bottom=722, obj_id=0, obj=lca "
#[5] "lca: 79%"
$[6] "left=439, right=534, top=174, bottom=440, obj_id=0, obj=lca "
#

Agora, eu quero criar um data frame onde eu reorganize essa informação 
de modo que sempre a linha superior que começa com "lca:... forme a 
última coluna da informação da linha abaixo que inicia-se com "left= 
...., de forma que meu *dataframe* final fique, baseado na estrutura 
parcial apresentada:

left right top bottom obj_id obj lca
475  586   0   527    0      lca 84
548  553   0   722    0      lca 82
439  534   174 440    0      lca 79

Para ao final salvar como:
write.table(mydataframe, paste0("pred_",filename, "*txt"),h=T)

Tentei uma derivação das sugestões do Max, mas eu tenho um problema, 
pois na primeira linha
os valores estão depois de ":" e na segunda depois de "=". Também tenho 
uma variável que chama lca
na primeira linha e um nível lca na variável obj do meu arquivo myfile.

names_col <- c("left", "right", "top", "botton", "obj_id",
"obj","lca")

mydf <- myfile %>%
   str_subset("lca$") %>%
   enframe(name = NULL) %>%
   separate(col = value, into = names_col, sep = "[=,]") %>%
   mutate_all(parse_number)

head(as.data.frame(mydf))
#[1] left   right  top    botton obj_id obj    lca
#<0 linhas> (ou row.names de comprimento 0)

Alguém que trabalha com manipulação de tabelas em R teria alguma dica 
para dar?

Obrigado,

Alexandre


-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20200330/2ca0d47d/attachment.html>


Mais detalhes sobre a lista de discussão R-br