Я пытаюсь объединить несколько фреймов данных, используя rbind.Если я вызываю rbind directy, проблем не возникает:
> 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
спасибо.