これはまさにあなたの質問にお答えします場合、私は知らないが、私は変更することによって、discard
機能を利用することができましたコードは少しです。ここに私がやったことだ:keep
とdiscard
以来
date1 <- readr::parse_date(c("2017-01-30", "2017-02-03", " "))
date2 <- readr::parse_date(c("2016-01-30", "", "2016-02-03"))
df <- tibble(date1, date2)
df
# A tibble: 3 x 2
date1 date2
<date> <date>
1 2017-01-30 2016-01-30
2 2017-02-03 NA
3 NA 2016-02-03
両方の仕事ベクターを用いて、データは私がmap
関数がでdiscard
を供給で良い作品だと思う理由は、特定の方法で彼らに手渡しする必要があるように見えますそれが好きな方法でデータ。
map_df(df, discard, is.na)
# A tibble: 2 x 2
date1 date2
<dttm> <dttm>
1 2017-01-30 2016-01-30
2 2017-02-03 2016-02-03
それはまたあなたにもstrptime
を使用する場合に機能します。
date1 <- strptime(c("2017-01-30", "2017-02-03", ""), "%Y-%m-%d")
date2 <- strptime(c("2016-01-30", "", "2016-02-03"), "%Y-%m-%d")
df <- data.frame(date1, date2)
df
date1 date2
1 2017-01-30 2016-01-30
2 2017-02-03 <NA>
3 <NA> 2016-02-03
map_df(df, discard, is.na)
# A tibble: 2 x 2
date1 date2
<dttm> <dttm>
1 2017-01-30 2016-01-30
2 2017-02-03 2016-02-03
をあなたが気づけばあなたはmap_df
機能を実行した後、しかしPOSIXlt
クラスでtibbleを作成し、することはできません日時オブジェクトはPOSIXctに変換されます。
知識が深いpurrr
の知識を持つ他の人が、エラーメッセージに関する特定の質問に回答できることを願っています。ただし、回避策を講じたいと思っていました。
私は関数 'discard'はPOSIXltクラスが気に入らないと思いますが、わかりません。 xを文字に変換すると動作します。 – ira