我有以下代码
library('rvest')
library('tidyverse')
test_url <- c('http://www.citact.org/senator-brent-waltz-r-greenwood-
district-36',
'http://www.citact.org/senator-ron-grooms-r-new-albany-
district-46',
'http://www.citact.org/representative-mike-speedy-r-
indianapolis-district-90')
test <- lapply(test_url, function(i){
web <- read_html(i)
grades <- html_nodes(web, 'td')
test_grades <- data.frame(one = (as.data.frame(html_text(grades), two =
'idk')))
first <- as.data.frame(test_grades[2:11, ])
second <- as.data.frame(test_grades[13:22, ])
names(test_grades) <- names(test_grades)
testing <- data.frame(c(first, second))
})
test_names <- lapply(test_url, function(i){
web <- read_html(i)
info <- html_nodes(web, 'h3')
text_info <- html_text(info)
names_test_df <- data_frame(member = text_info)
names_test_df <- separate(names_test_df, col = member, c('Useless',
'Info'), sep = ': ')
names_test_df <- separate(names_test_df, col = Info, c('names',
'District'), sep = ',')
names_test_df <- separate(names_test_df, col = names, c('Position',
'First', 'Last', 'Party')
, sep = ' ')
names_test_df <- separate(names_test_df, col = Party, c('Party','District
Name'), sep = '-')
})
y <- do.call(cbind.fill, c(list(do.call(rbind, test)), do.call(rbind,
test_names)))
这在所有信息都被收集并且没有错误的意义上有效,但问题在于我的最终数据框,我称之为y。当我创建y时,数据帧测试和数据帧test_names不匹配。例如,测试中的某些成绩和年份与test_names中的正确候选项不匹配。有没有办法确保这些正确对应?我尝试在循环之前组合数据帧,但是我没有成功。可能有更好的方法,这只是我最初的计划。
答案 0 :(得分:1)
尽量避免重塑和绑定并在每一行中执行do.call,这会使您的代码难以阅读,因此也很难找到错误。我继续前进并决定让它更简单一些。
mi.Invoke(null, parms)