purrr::map()
を使用してNULL
要素が存在するかどうかをテストし、それらを削除するデータフレーム内にリストがあります。再帰関数呼び出し用のpurrr :: mapを使用する
私はsapplyを使ってこれを行うことができましたが、マップは機能しませんでした。私はhttps://cran.r-project.org/web/packages/purrr/purrr.pdfを読むが、私は何が欠けているのか分からない。
はここでうまく機能 - この私のsapplyコードです:
P_Trans<- P_Trans[!sapply(P_Trans$Group,is.null),]
ここのは、私がpurrr::map
のためにしようとしたいくつかのことですが、彼らは動作しません。ここで
は、私が試した4つのものがあります:
A)
P_Trans %>% purrr::map(.,~is.null(Group))
B)
P_Trans %>% purrr::map(.,~is.null(.$Group))
C)
P_Trans %>% purrr::map(~is.null(.$Group))
D)
P_Trans %>% purrr::map(~is.null(Group))
私の間違いを訂正して、私が上記の4つのオプションで間違っていることを教えてもらえますか?
データ:すべてのあなたのソリューションでは
dput(P_Trans)
structure(list(TransactionID = c("a1", "a1", "a1", "a2", "a2",
"a2", "a3", "a3", "a3", "a3", "a4", "a5", "a5", "a5", "a5", "a5",
"a6", "a6", "a7"), ProductID = c("A", "B", "1", "C", "4", "5",
"D", "C", "7", "8", "H", "1", "2", "3", "3", "1", "H", "15",
"22"), ProductType = c(1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1, 2, 2,
2, 2, 2, 1, 2, 3), Group = list(structure(list(Group = "Group1"), .Names = "Group", row.names = c(NA,
-1L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group1"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group1"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = c("Group2", "Group3")), .Names = "Group", row.names = c(NA,
-2L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group2"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group2"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group3"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = c("Group2", "Group3")), .Names = "Group", row.names = c(NA,
-2L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group3"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group3"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group5"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group1"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group1"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group1"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group1"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group1"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group5"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
Group = "Group5"), .Names = "Group", row.names = c(NA, -1L
), class = c("tbl_df", "tbl", "data.frame")), NULL)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -19L), .Names = c("TransactionID",
"ProductID", "ProductType", "Group"))
:あなたが欲しいものを得るために
その他の方法:
ソリューションの
map
同等のmap_lgl
があなたのsapply
やったようなlogical
のベクトルを返すように設計されているため@NateがコメントとしてP_Trans[!map_lgl(P_Trans$Group,is.null),]
ですP_Trans [!map_lgl(P_Trans $ Group、is.null)、] '? – Nate@NathanDay - うわー!ありがとうございました。これはうまくいく。しかし、私の間違いについてコメントしていただけますか?私は妖精ですので、これは私が概念を学ぶのに役立ちます。私はあなたの考えを感謝します。 – watchtower
私は 'data.frames'の' list'を持っているときに 'map'を使っています。通常はモデリングのために繰り返していきたいと思います。デフォルトで 'map'は' list'を返そうとしています。 'map-lgl'のようなラッパーを使うと' map(p_trans $ Group、is.null)%>と同様の 'なぜなら 'map'は時々私に合ったものを与え、' xapply'に戻る – Nate