У меня есть следующий код для импорта некоторых данных.
url <- "https://finance.yahoo.com/industry/Scientific_Technical_Instruments"
library(rvest)
read <- read_html(url) %>%
html_table()
library(plyr)
data <- ldply(read, data.frame)
Однако данные создают фрейм данных из 20 столбцов, тогда как их должно быть только 10. Имена столбцов фрейма данных не импортированы должным образом и создают ряд значений NA.
Есть ли способ в R переместить имена столбцов, а затем удалить созданные столбцы NA?





Ваш объект read представляет собой список с заголовками в качестве первого элемента и данных в качестве второго. Ваша проблема в том, что имена столбцов в read[[1]] не являются синтаксически допустимыми именами для столбцов фрейма данных.
Вам нужно очистить свои имена с помощью make.names. Например.
data <- data.frame(read[[2]])
names(data) <- make.names(names(read[[1]])
Однострочную версию для этого можно найти в здесь.
data <- setNames(data.frame(read[[2]]), make.names(names(read[[1]])))
о, теперь я понимаю, в чем проблема!
сочетание наших подходов: setNames(data.frame(read[[2]]), colnames(read[[1]]))
my_data <- data.frame(read[[2]])
colnames(my_data) <- colnames(read[[1]])
Если вы считаете, что один из ответов вам помог, не могли бы вы одобрить один из них как правильный?