创建不同长度的列表列表

时间:2016-04-07 21:07:43

标签: r data.table xml2

我试图检查一些单词是否是名词,动词等。

所以我的最终输出应该是一个单词列表及其分类。

考虑这个脚本:

library(data.table)
library(xml2)
random_words_2 <- c("aa","ab","ac")
dic <- list()
dics <- list()
for (i in 1:3){
h <-     paste0("http://www.oxforddictionaries.com/definition/english/",random_words_2[i])
html <- read_html(h)
oxford <- html_nodes(html, css = ".partOfSpeech")
n <- length(oxford)
for (m in 1:n) {
word <- as_list(oxford[[m]])
w <-  unlist(word[1])
dic[[m]] <- data.table(as.character(w))
}
dics <- rbindlist(dics, dic,use.names = TRUE,fill=FALSE)
}

有些单词有多个分类,如动词,副词等。因此,列表会有不同的大小。 我尝试了上面的代码,但dics变量应该给我解决方案:

  

空数据。表(0行和0列)

但是,dic变量给出:

  

[[1]]        V1 1:名词

     

[[2]]                V1 1:缩写

有人可以解释为什么会发生这种情况吗?是否有更有效的方法来解决它?

由于

1 个答案:

答案 0 :(得分:1)

将for循环替换为:

dics <- list()
for (i in 1:3){ 
h <- paste0("http://www.oxforddictionaries.com/definition/english/",random_words_2[i]) 
html <- read_html(h) 
oxford <- html_nodes(html, css = ".partOfSpeech") 
n <- length(oxford) 
dic <- list() 
for (m in 1:n) 
{ 
    word <- as_list(oxford[[m]]) 
    w <- unlist(word[1]) 
    dic[[m]] <- data.table(as.character(w)) 
} 
dics <- c(dics, setNames(list(dic),random_words_2[i])) 
}