dplyr“;数据“U帧”;功能无法进行回收和数据。框架有限制吗?
按如下方式装载包裹:dplyr“;数据“U帧”;功能无法进行回收和数据。框架有限制吗?,r,dataframe,dplyr,R,Dataframe,Dplyr,按如下方式装载包裹: R version 3.1.1 (2014-07-10) Platform: x86_64-apple-darwin10.8.0 (64-bit) attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] data.table_1.9.3 dplyr_0.3 l
R version 3.1.1 (2014-07-10)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.9.3 dplyr_0.3
loaded via a namespace (and not attached):
[1] assertthat_0.1 DBI_0.3.1 magrittr_1.0.1 parallel_3.1.1 plyr_1.8.1 Rcpp_0.11.2
[7] reshape2_1.4 stringr_0.6.2 tools_3.1.1
尝试在新的dplyr_0.3中测试有趣的“数据帧”函数。在构建数据帧时,数据帧似乎无法进行回收。这是故意的吗
data_frame(x=letters[1:10], y=1:5, z=runif(10)) ## pay attention to "y" column
Error in data_frame_(lazyeval::lazy_dots(...)) :
arguments imply differing number of rows: 10, 5, 10
然而,base data.frame函数可以实现
data.frame(x=letters[1:10], y=1:5, z =runif(10))
x y z
1 a 1 0.54345855
2 b 2 0.98478537
3 c 3 0.51510861
4 d 4 0.03766893
5 e 5 0.32097472
6 f 1 0.77391366
7 g 2 0.61993720
8 h 3 0.87983035
9 i 4 0.63159025
10 j 5 0.53198094
尽管data.frame会给出一个错误,如果预期数据框的行数与“y”列中的元素数的倍数不是整数:
data.frame(x = letters[1:10], y = 1:4, z = runif(10)) ## Note the change on "y"
Error in data.frame(x = letters[1:10], y = 1:4, z = runif(10)) :
arguments imply differing number of rows: 10, 4
似乎只有data.table可以尝试完成任务,但给出了警告消息:
data.table(x = letters[1:10], y = 1:4, z = runif(10))
x y z
1: a 1 0.17149580
2: b 2 0.56452774
3: c 3 0.01237395
4: d 4 0.47183540
5: e 1 0.52561037
6: f 2 0.27053798
7: g 3 0.82603959
8: h 4 0.73871563
9: i 1 0.03931619
10: j 2 0.34125535
Warning message:
In data.table(x = letters[1:10], y = 1:4, z = runif(10)) :
Item 2 is of size 4 but maximum size is 10 (recycled leaving remainder of 2 items)
为什么使用“数据框架”和“数据框架”时会有如此不同的行为?
我正在使用dplyr和data.table包同时处理数据帧和数据表。了解这种行为将有助于避免昂贵的错误。谢谢。问:“这是故意的吗?”。好的,从data\u frame
的帮助文本中可以看到:“仅回收长度为1的输入。”。所以是的,我认为这是故意的
问:“为什么?”:可能是因为
data\u-frame
是一个“精简版的data.frame”(来自?data\u-frame
)。而且这种循环是常见的错误源。