首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载splitstackshape/data.frame和tidyr/dplyr时运行cSplit时出错

加载splitstackshape/data.frame和tidyr/dplyr时运行cSplit时出错
EN

Stack Overflow用户
提问于 2015-08-24 02:36:44
回答 1查看 1.6K关注 0票数 0

示例数据文件(csv格式)

代码语言:javascript
复制
testdf <- read.csv("example.csv")

我正在努力使一些名册挖掘自动化。在某种程度上,我需要基于带有分隔符的名称对行进行拆分,因此分片堆栈形状中的cSplit是完美的。我还使用了一堆dplyr数据整形,在此之前和之后进行了拆分。

加载的库:

代码语言:javascript
复制
library(data.table)
library(splitstackshape)
library(tidyr)
library(dplyr)

问题是,当我在data.frame之后加载dplyr时,我得到以下消息:

代码语言:javascript
复制
Attaching package: ‘dplyr’

The following objects are masked from ‘package:data.table’:

    between, last

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union

然后,当我尝试使用cSplit时:

代码语言:javascript
复制
test <- cSplit(testdf, "Registrar", "/", direction = "long")

我知道这个错误:

代码语言:javascript
复制
Error in `[.tbl_df`(indt, , splitCols, with = FALSE) : 
  unused argument (with = FALSE)

我尝试过各种排列-这个错误只有在加载data.frame和dplyr时才会发生(按任何顺序),并且在不加载dplyr的情况下重新启动R或不加载它会使cSplit正常工作。

不过,我需要能够同时使用这两种方法,而分离dplyr并没有帮助(只是抛出缺少的dplyr错误)。

我见过这条线,但他们似乎得出结论,数据已经损坏。这看起来很可能是因为如果我运行玩具数据集,

代码语言:javascript
复制
Name <- "Bo / Ashley"
Date <- "2015-02-04"

testdf2 <- data.frame(Name, Date)

testtoy <- cSplit(testdf2, "Name", "/", direction = "long")

效果很好。但我不知道如何解决这个“腐败”问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-24 03:30:53

我还没有更新“拆分堆栈形状”中的函数来处理tbl_df对象。因此,当前的解决方法是在链中添加一个data.frame

比较:

代码语言:javascript
复制
library(splitstackshape)
library(dplyr)

CT <- tbl_df(head(concat.test))

CT %>% cSplit("Likes")
# Error in `[.tbl_df`(indt, , splitCols, with = FALSE) : 
#   unused argument (with = FALSE)

CT %>% data.frame %>% cSplit("Likes")
#      Name                   Siblings    Hates Likes_1 Likes_2 Likes_3 Likes_4 Likes_5
# 1:   Boyd Reynolds , Albert , Ortega     2;4;       1       2       4       5       6
# 2:  Rufus  Cohen , Bert , Montgomery 1;2;3;4;       1       2       4       5       6
# 3:   Dana                     Pierce       2;       1       2       4       5       6
# 4: Carole Colon , Michelle , Ballard     1;4;       1       2       4       5       6
# 5: Ramona           Snyder , Joann ,   1;2;3;       1       2       5       6      NA
# 6: Kelley          James , Roxanne ,     1;4;       1       2       5       6      NA

或者,由于with = FALSE是在"data.table“中使用的参数,所以可以使用tbl_dt而不是tbl_df对象:

代码语言:javascript
复制
CT2 <- tbl_dt(head(concat.test))

CT2 %>% cSplit("Likes")
#      Name                   Siblings    Hates Likes_1 Likes_2 Likes_3 Likes_4 Likes_5
# 1:   Boyd Reynolds , Albert , Ortega     2;4;       1       2       4       5       6
# 2:  Rufus  Cohen , Bert , Montgomery 1;2;3;4;       1       2       4       5       6
# 3:   Dana                     Pierce       2;       1       2       4       5       6
# 4: Carole Colon , Michelle , Ballard     1;4;       1       2       4       5       6
# 5: Ramona           Snyder , Joann ,   1;2;3;       1       2       5       6      NA
# 6: Kelley          James , Roxanne ,     1;4;       1       2       5       6      NA

当然,如果有人创建了一个解决这个问题的拉请求,我将非常乐意进行相关的更新:-)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32173746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档