Ошибка в строках списка Комбинация и передача, системная ошибка?
Во время процесса интеллектуального анализа данных, гетерогенные данные - это то, с чем мы должны столкнуться. В этом случае мне нужно вставить данные из списка в кадр данных, который создается вручную. Весь прогресс такой:
загрузите веб-страницу таблицы таблиц (используя "rvest"), таблица сохранена как "список"; Извлеките столбец, который необходимо передать; Объедините строки извлеченного столбца в вектор;Добавьте вектор из вышеперечисленного в ячейку кадра данных.
- PS: этот пример имеет китайский контекст, но это не имеет значения в нашем процессе. Ive попытался найти английский пример. Тем не менее, ни один английский профиль не заполнен, что не может выполнить условия в этом вопросе: 1-й столбец интереса имеет как минимум 2 строки.
1-й шаг веб-разработки:
bapg <- read_html("http://ir.las.ac.cn/xiongyl@llas.ac.cn")
intnode <- html_node(bapg, xpath='.//div[@class="detailauthor"]/table')
intab <- html_table(intnode, trim = TRUE, fill = TRUE)
После этого шага "intab"
восстановил таблицу на веб-странице, которая записывает "интерес изучения" этого создателя. И класс "intab"
- это "dataframe":
> dput(intab)
structure(list(X1 = c(NA, NA, NA, NA), X2 = c("学科", "水资源管理",
"区域发展与规划", "可持续发展"), X3 = c("研究领域", "", "", ""
), X4 = c("研究方向", "", "", "")), .Names = c("X1", "X2", "X3",
"X4"), class = "data.frame", row.names = c(NA, -4L))
> class(intab)
[1] "data.frame"
Затем я начал чистить данные, моя цель - вставить все эти интересы в одну ячейку с именем "topic_interest" готового фрейма данных, как показано ниже:
dtcon <- data.frame(srn = c("name", "title", "Organization", "Group", "openid","topic_interest" ),
row.names = c("name", "title", "Organization", "Group", "openid", "topic_interest"),
check.rows = FALSE, check.names = TRUE, fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
Я думаю, что это непростая задача, но третий шаг застрял. После получения таблицы я извлечу второй столбец списка "intab" и удалю его строку NA, нарисуйте столбец на куски и затем перепроверьте их в один вектор символов:
intrs <- unlist(intab[-1,2])
> dput(intrs)
c("水资源管理", "区域发展与规划", "可持续发展")
> dtcon["topic_interest", "xiongyl@llas.ac.cn"] <- intrs
Error in '[<-.data.frame'('*tmp*', "topic_interest", "xiongyl@llas.ac.cn", :
replacement has 3 rows, data has 1
Но когда я извлекаю персональные данные с одной страницы, этот метод работает хорошо. Я сомневаюсь, что это может быть системная ошибка, как насчет вас? Спасибо за вашу помощь.
- PS: Настройка моего ПК - это Windows7 SP1 x64, упрощенный китайский, R3.4.3 x64, все обновления обновлены.