1

这是我到目前为止所做的。因此,这基本上是使用 XML 从 Internet 上抓取一些表,将它们放入数据帧列表中,然后尝试(并且失败)以有效且一致的方式格式化它们。

我不知道如何对所有数据框应用相同的更改。我想我需要使用 llply,但我做错了。总的来说,我正在努力实现:

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

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

  • 然后我想为每本书添加一个标题列。我想我必须手动执行此操作。

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

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

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

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

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

4

1 回答 1

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)
于 2013-08-04T14:38:00.583 回答