gma*_*ais 6 r list dataframe rbind
我遇到了一个问题,并设法通过破解解决了该问题,我希望了解该问题,并希望摆脱该黑客攻击。
我试图重现问题无济于事,所以的话将要在这里就够了。
我正在尝试rbind在R中使用两个数据框,其结果必须再次是一个数据框,而不是list。我rbind在大多数脚本中都使用过,从来没有遇到过问题。
但是,今天我将rbind应用于两个数据帧,例如foo,bar并且返回list foobar。我用来解决此问题的技巧是强制转换foo并再次转换bar为数据帧,如下所示:
rbind(data.frame(foo), data.frame(bar))
此作品,但我想知道为什么我必须把它明确地转换时都foo和bar已经data.frames。
那么我的问题是,当两个输入都是data.frames时,将在哪种“一般”情况下rbind返回a list?
我尝试通过查看rbind(A,A)和调试它rbind(B,B)。两次都返回一个数据帧而不是一个list。为什么会rbind(A,B)返回一个list?
谢谢!
如果您的数据帧中的一个实际上是小标题,则需要使用dplyr::bind_rows()代替rbind(),因为它dplyr::bind_rows()是专门为处理小标题而设计的(通常也适用于数据帧)。由于小标题是tidyverse的发明,因此不一定与基本功能完全兼容rbind()(例如,我本人不知道这种行为会在您提出之前发生)。
有关这两个功能之间的区别以及为什么要使用dplyr::bind_rows()over的更多信息rbind(),请参见此处。