加载 splitstackshape/data.frame 和 tidyr/dplyr 时出现错误 运行 cSplit
Error running cSplit when splitstackshape/data.frame and tidyr/dplyr are loaded
Example data file (csv format)
testdf <- read.csv("example.csv")
我正在尝试自动化一些花名册挖掘。有一次我需要根据带有分隔符的名称拆分行,因此来自 splitstackshape 的 cSplit 是完美的。我还在拆分之前和之后进行了一堆 dplyr 数据整形。
加载的库:
library(data.table)
library(splitstackshape)
library(tidyr)
library(dplyr)
问题是当我在 data.frame 之后加载 dplyr 时,我收到以下消息:
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 时:
test <- cSplit(testdf, "Registrar", "/", direction = "long")
我收到这个错误:
Error in `[.tbl_df`(indt, , splitCols, with = FALSE) :
unused argument (with = FALSE)
我已经尝试了各种排列组合——只有当 data.frame 和 dplyr 都被加载(以任一顺序)时才会出现此错误,并且在没有 dplyr 的情况下重新启动 R 或从不加载它会使 cSplit 正常工作。
虽然我需要能够同时使用两者,但分离 dplyr 没有帮助(只会抛出 missing dplyr 错误)。
我已经看到 但他们似乎得出数据已损坏的结论。这似乎很可能,因为如果我 运行 在玩具数据集上,
Name <- "Bo / Ashley"
Date <- "2015-02-04"
testdf2 <- data.frame(Name, Date)
testtoy <- cSplit(testdf2, "Name", "/", direction = "long")
它工作正常。但我不知道如何解决这个 "corruption".
我还没有更新 "splitstackshape" 中的函数来处理 tbl_df
对象。因此,当前的解决方法是在您的链中添加 data.frame
。
比较:
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
对象:
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
当然,如果有人创建了解决问题的拉取请求,我会非常乐意进行相关更新:-)
Example data file (csv format)
testdf <- read.csv("example.csv")
我正在尝试自动化一些花名册挖掘。有一次我需要根据带有分隔符的名称拆分行,因此来自 splitstackshape 的 cSplit 是完美的。我还在拆分之前和之后进行了一堆 dplyr 数据整形。
加载的库:
library(data.table)
library(splitstackshape)
library(tidyr)
library(dplyr)
问题是当我在 data.frame 之后加载 dplyr 时,我收到以下消息:
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 时:
test <- cSplit(testdf, "Registrar", "/", direction = "long")
我收到这个错误:
Error in `[.tbl_df`(indt, , splitCols, with = FALSE) :
unused argument (with = FALSE)
我已经尝试了各种排列组合——只有当 data.frame 和 dplyr 都被加载(以任一顺序)时才会出现此错误,并且在没有 dplyr 的情况下重新启动 R 或从不加载它会使 cSplit 正常工作。
虽然我需要能够同时使用两者,但分离 dplyr 没有帮助(只会抛出 missing dplyr 错误)。
我已经看到
Name <- "Bo / Ashley"
Date <- "2015-02-04"
testdf2 <- data.frame(Name, Date)
testtoy <- cSplit(testdf2, "Name", "/", direction = "long")
它工作正常。但我不知道如何解决这个 "corruption".
我还没有更新 "splitstackshape" 中的函数来处理 tbl_df
对象。因此,当前的解决方法是在您的链中添加 data.frame
。
比较:
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
对象:
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
当然,如果有人创建了解决问题的拉取请求,我会非常乐意进行相关更新:-)