Конвертировать список в data.frame - PullRequest
0 голосов
/ 02 мая 2020

У меня есть столбец, который состоит из ссылок, в которых у меня есть файлы в формате html. Я получаю этот код с помощью этой команды.

tablas <- list()
for(i in 1:length(consumos$Especificaciones)){
  url <- consumos$Especificaciones[i]
  tablas[[i]] = read_html(url) %>% html_nodes("table") %>% html_table()
}

tablas[[1]]

Затем у меня есть список из 9, и я хочу поместить информацию этого списка в Excel CEL.

Как я могу это сделать?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 02 мая 2020

Предположим, я правильно понял ваш вопрос, вот немного измененный код, который я бы предложил вам попробовать:

n <- length(consumos$Especificaciones) #to simplify the following lines

ander <- vector("list", n) #creates an empty list of length n

for(i in 1:n){
  url <- consumos$Especificaciones[i]
  ander[[i]] <- get_txt(url)
}

#Some different ways to structure the output:
codesDFh <- as.data.frame(ander) #returns a data.frame of 1 row * n columns
codesDFv <- as.data.frame(t(t(ander))) #returns a data.frame of n rows (1 column)
codesV <- unlist(ander) #returns a vector of 9 items (html codes I guess)

Или, проще говоря, создать вектор 'ander' для хранения результаты, так что вам не нужно «удалять» его после l oop:

codes <- character(n) #supposing your html codes are basic text (of class character)

Наконец, общий совет в программировании на R: старайтесь избегать использования имен, которые уже используются основными c функции / переменные языка R, например, в вашем коде вы использовали 'c', но базовая функция с именем 'c' существует (для объединения данных). Это рано или поздно предотвратит некоторые проблемы.

Надеемся, что это поможет вам. Приветствия.

Март c

0 голосов
/ 02 мая 2020

Последняя попытка:

library(tidyverse)

urls <- c("http://multimedia.globomatik.net/productsSheet/A0023294.txt",
          "http://multimedia.globomatik.net/productsSheet/A0023293.txt")

consumos <- data.frame(Especificaciones = urls,
                       stringsAsFactors= FALSE)

ander <- list()
for(i in 1:length(consumos$Especificaciones)){
  ander[i] <- consumos$Especificaciones[i] %>% gettxt
  Sys.sleep(5)
}

c <- ander %>% as.data.frame

Вы хотите это?

0 голосов
/ 02 мая 2020

Я не пробовал. Но у меня есть другой вопрос, потому что я решил проблему.

У меня есть фрейм данных с 9 столбцами, и я хочу вернуть 9 html кодов

ander <- list()
for(i in 1:length(consumos$Especificaciones)){
  url <- consumos$Especificaciones[i]
  ander[[i]] = get_txt(url)
}

c <- as.data.frame(ander[[i]])

С этим кодом, Я получаю только 1 шт. с 1. переменным.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...