我应该如何将相同的格式应用于R中的数据帧列表?

时间:2013-08-04 14:19:08

标签: r plyr

Here is what I've done so far.所以,这基本上是使用XML从互联网上抓取一些表格,将它们放入数据帧列表中,然后尝试(并且失败)以有效和一致的方式格式化它们。“/ p >

我无法弄清楚如何对所有数据帧应用相同的更改。我想我需要使用llply,但我无法正确使用它。总的来说,我正在努力实现:

  • 列使用make.names命名所有合法的R名称,然后使用 str_replace_all朝向文件末尾去除所有非alpha 字符所以名称相同

  • 接下来我想删除所有数据帧中除前四列之外的所有列

  • 然后我想为每本书添加一个标题栏目。我想我必须手动完成这个。

  • 最后,我想做一个rbind将所有数据帧加在一起

让我感到难过的是如何对列表中的每个数据框应用相同的转换,例如修改列名和截断行。 llply是否适合这项工作?我该如何使用它?

到目前为止,我能够实现的最多功能是将我的数据帧列表转换为具有正确名称的向量列表。我相信这是因为当我尝试使用names()时,它返回了正确名称的向量,而不是具有正确名称的数据帧。这是我的尝试:

tlist <- llply(tabs, function(x) as.data.frame(str_replace_all(make.names(names(x)), "[^[:alpha:]]", "")))

我认为我距离这里不到一百万英里,但我想不出如何让它返回完整的df。

1 个答案:

答案 0 :(得分:1)

请改用:

f <- function(x)
{
 y <- x[,1:4]
 names(y) <- str_replace_all(make.names(names(y)), "[^[:alpha:]]", "")
 y
}

result <- rbind.fill(llply(tabs, f))

编辑:关注@baptiste,这可能会更好:

result <- ldply(tabs, f)