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


_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código 
mínimo reproduzível.

Responder a