从实例列表在R中创建数据框

时间:2016-03-22 15:07:32

标签: r web-scraping dataframe

我从网站上删除了一个数据列表,并使用以下代码将其转换为R中的列表。现在我已将其转换为带有元素的列表,我无法将其转换为矩阵/数据框,因为我需要。

htmlpage5<-read_html("http://www.catholichealthinitiatives.org/landing.cfm?  xyzpdqabc=0&id=39524&action=list&sortby=state&pageNo=4")
chihtml5<-html_nodes(htmlpage5,".info")
chi5<-html_text(chihtml5)


chi27<-strsplit(trimws(chi5), '[\n\r\t]+|(?<![A-Z])\\B(?=[A-Z])|(?<=[a-  z]\\.)\\b(?=[A-Z])', perl = TRUE)
chi27

myfunction<-function(x) { 
  if (length(x)==4) {x <- c(x,"")} 
  else if (length(x)==3) {x <- c(x,"","")}
  return(x)}

 chiapply2 <- sapply(chi27, my function)
 chiapply2

当我运行此代码时,chiapply 2会生成以下数据。

[[24]]
[1] "CHI Health Schuyler" "104 W. 17 St."       "Schuyler, NE 68661"  "P     402.352.2441"      ""                   

[[25]]
[1] "CHI Health St. Elizabeth" "555 South 70th Street"    "Lincoln, NE 68510"            "P 402.219.800"           
[5] "F 402.219.8973"          
等等......

如何将此数据转换为矩阵/数据框,以便可以将其转换为cvs / tsv以报告为excel。任何帮助将不胜感激!

这是我尝试使用的代码:

chit2 <- t(chiapply2)
class(chit2)
chit2

但是我要回来了:

     [,1]        [,2]        [,3]        [,4]        [,5]        [,6]        [,7]        [,8]        [,9]        [,10]      
[1,] Character,5 Character,6 Character,5 Character,5 Character,5 Character,5 Character,5 Character,5 Character,5 Character,5

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

如果我有一个列表x,就像你这样的实例:

> x = list()
> x[[1]] = c("a", 1, 2)
> x[[2]] = c("b", 1, 2)
> x
[[1]]
[1] "a" "1" "2"

[[2]]
[1] "b" "1" "2"

我可以将其转换为数据帧,如下所示:

> y <- data.frame(t(as.data.frame(x)), row.names = 1:length(x) )
> y
  X1 X2 X3
1  a  1  2
2  b  1  2

如果chiapply2是你的清单:

chiapply3 <- data.frame(t(as.data.frame(chiapply2)), row.names = 1:length(chiapply2) )

这可能不是最有效的解决方案,因为它需要两次演员data.frame,但它的功能......