<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
</head>
<body>
<font face="Courier New, Courier, monospace">Prezados membros do
r-br,<br>
</font>
<div class="moz-forward-container"><font face="Courier New, Courier,
monospace"><br>
Eu gostaria de criar um novo data frame à partir de output de
uma análise em *txt empregando o pacote *tidyverse*, sendo:<br>
<br>
library(tidyverse)<br>
<br>
#Arquivo original<br>
<a class="moz-txt-link-freetext" href="https://www.dropbox.com/s/2f13c2wb66zfrmr/result.txt?dl=0">https://www.dropbox.com/s/2f13c2wb66zfrmr/result.txt?dl=0</a><br>
<br>
#Faço a leitura do arquivo<br>
myfile<-read_lines("result.txt")<br>
<br>
#Separo o nome do arquivo<br>
filename<-myfile[1]<br>
filename<-gsub("\\..*","",filename)<br>
filename<br>
#[1] "sample_107"<br>
<br>
#Então removo a primeira linha que só tem a informação do nome
do arquivo que o originou<br>
myfile<-myfile[-1]<br>
<br>
<br>
#Estrutura parcial do arquivo myfile<br>
#<br>
head(myfile)<br>
#[1] "lca: 84%"<br>
#[2] "left=475, right=586, top=0, bottom=527, obj_id=0, obj=lca
"<br>
#[3] "lca: 82%"<br>
#[4] "left=548, right=553, top=0, bottom=722, obj_id=0, obj=lca
"<br>
#[5] "lca: 79%"<br>
$[6] "left=439, right=534, top=174, bottom=440, obj_id=0,
obj=lca "<br>
#<br>
<br>
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:<br>
<br>
left right top bottom obj_id obj lca<br>
475 586 0 527 0 lca 84<br>
548 553 0 722 0 lca 82<br>
439 534 174 440 0 lca 79<br>
<br>
Para ao final salvar como:<br>
write.table(mydataframe, paste0("pred_",filename, "*txt"),h=T)<br>
<br>
Tentei uma derivação das sugestões do Max, mas eu tenho um
problema, pois na primeira linha<br>
os valores estão depois de ":" e na segunda depois de "=".
Também tenho uma variável que chama lca<br>
na primeira linha e um nível lca na variável obj do meu arquivo
myfile.<br>
<br>
names_col <- c("left", "right", "top", "botton", "obj_id",<br>
"obj","lca")<br>
<br>
mydf <- myfile %>%<br>
str_subset("lca$") %>%<br>
enframe(name = NULL) %>%<br>
separate(col = value, into = names_col, sep = "[=,]") %>%<br>
mutate_all(parse_number)<br>
<br>
head(as.data.frame(mydf))<br>
#[1] left right top botton obj_id obj lca<br>
#<0 linhas> (ou row.names de comprimento 0)<br>
<br>
Alguém que trabalha com manipulação de tabelas em R teria alguma
dica para dar?<br>
<br>
Obrigado,<br>
<br>
Alexandre</font><br>
<br>
<br>
</div>
</body>
</html>