【发布时间】:2016-09-30 14:27:43
【问题描述】:
以下代码始终在我的 R 系统 3.2.2 上产生崩溃:
> R.version
_
platform i486-slackware-linux-gnu
arch i486
os linux-gnu
system i486, linux-gnu
status
major 3
minor 2.2
year 2015
month 08
day 14
svn rev 69053
language R
version.string R version 3.2.2 (2015-08-14)
nickname Fire Safety
> lll = list(list(5,3,4), list(5,3,7), list(6,2,1), list(6,1,3), list(5,2,1))
> dd = data.frame(do.call(rbind, lll))
> dd
X1 X2 X3
1 5 3 4
2 5 3 7
3 6 2 1
4 6 1 3
5 5 2 1
> dplyr::arrange(dd, X1)
*** caught segfault ***
address (nil), cause 'memory not mapped'
Traceback:
1: .Call("dplyr_arrange_impl", PACKAGE = "dplyr", data, dots)
2: arrange_impl(.data, dots)
3: arrange_.tbl_df(tbl_df(.data), .dots = dots)
4: arrange_(tbl_df(.data), .dots = dots)
5: as.data.frame(arrange_(tbl_df(.data), .dots = dots))
6: arrange_.data.frame(.data, .dots = lazyeval::lazy_dots(...))
7: arrange_(.data, .dots = lazyeval::lazy_dots(...))
8: dplyr::arrange(dd, X1)
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
为什么会发生这种崩溃,我该如何纠正它?
【问题讨论】:
-
你是如何安装 dplyr 的?
-
如果您检查
str(dd),列仍然是list。lll是一个嵌套列表。你可能需要dd <- data.frame(do.call(rbind, lapply(lll, unlist))) -
将“lll”转换为数据框的最佳方法是什么?
-
我在 R-devel (3.4.0) 上使用 dplyr 0.5.0 得到
Error: Unsupported vector type list。packageVersion("dplyr")是什么? -
您可能会尝试更新到 0.5.0(尽管您的 R 版本也已过时...理想情况下您会同时更新...)