Ошибка в строках списка Комбинация и передача, системная ошибка?

91
4

Во время процесса интеллектуального анализа данных, гетерогенные данные - это то, с чем мы должны столкнуться. В этом случае мне нужно вставить данные из списка в кадр данных, который создается вручную. Весь прогресс такой:

загрузите веб-страницу таблицы таблиц (используя "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, все обновления обновлены.

спросил(а) 2018-02-24T13:01:00+03:00 2 года, 9 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема