【发布时间】:2011-12-19 21:17:16
【问题描述】:
我正在尝试使用 rbind 合并多个数据帧。如果我直接调用 rbind 就没有问题:
> test <- rbind(x)
> is.data.frame(x)
[1] TRUE
但是,如果我使用do.call,我会遇到一个问题,即我的字符列被折叠并且数据框被转换为矩阵。
>test <- do.call("rbind", x)
> is.data.frame(test)
[1] FALSE
根据 ?rbind 文档,我尝试了add stringsAsFactors = FALSE,但行为没有改变。我的数据表如下所示:
ID sequence descriptor
1 aaacccttt g12
2 actttgtgt e34
3 tttgggctc b12
4 ccgcgcgcg c12
… … ...
rbind 输出看起来像这样,但do.call("rbind", x) 输出如下所示,其中序列列不再是字符:
ID 363 426 91
Sequence 98 353 100
descriptor g12 b12 c12
我想使用 do.call,因为我正在循环一组数据帧,以便使用下面的脚本合并它们。另一个有用的答案可能会提供有关如何在循环调用多个数据帧时合并多个数据帧的替代解决方案。
stringsAsFactors = FALSE
dfs <- as.list(ls(pattern="Data_"))
for (i in 1:length(dfs)) {
x <- get(as.character(dfs[i]))
AllData <- do.call("rbind", x)
}
dfs 是我工作环境中的数据帧列表,我使用get 获取实际数据帧
谢谢。
【问题讨论】: