0

サンプルデータファイル(csv形式)

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 を切り離しても役に立ちません (dplyr が見つからないというエラーが発生するだけです)。

このスレッドを見たことがありますが、データが破損しているという結論に達したようです。これは、おもちゃのデータセットで実行すると、

Name <- "Bo / Ashley"
Date <- "2015-02-04"

testdf2 <- data.frame(Name, Date)

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

それは正常に動作します。しかし、この「破損」を修正する方法がわかりません。

4

1 に答える 1

2

「splitstackshape」の関数をtbl_dfオブジェクトで動作するように更新していません。そのため、現在の回避策はチェーンに a を追加すること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

もちろん、誰かが問題を解決するプル リクエストを作成した場合は、関連する更新を喜んで行います :-)

于 2015-08-24T03:30:53.137 に答える