0

華麗なmiパッケージを使用しているときに、欠落しているデータの代入とティブルについて、予期しない動作に遭遇しました (少なくとも、私には予期していませんでした)。

Bと呼ばれるティブルを想定しましょう。問題のあるコマンドは次のとおりです:-

A <- missing_data.frame(B)

結果のエラーメッセージは次のとおりです:-

.guess_type(y、favor_ordered、favor_positive、threshold、variable_name) のエラー [[B の最初の変数の名前]] はベクトルでなければなりません

この例では、動作を再現しています。

# Make the test data frames  and tibbles
Numbers <- sample(seq(1:200),40)
Numbers2 <- sample(seq(1:200),40)
Numbers3 <- sample(seq(1:200),40)
Letters <- sample(letters,40,replace=TRUE)

#Mixed numeric and character data
DF.test <- data.frame(Numbers,Letters)
    str(DF.test) #Number, Factor

DF.test2 <- data.frame(Numbers,Letters,stringsAsFactors = FALSE)
    str(DF.test2) #Number, Character

Tibble.test <- data_frame(Numbers,Letters)
    str(Tibble.test)  #Number, Character

# Run the tests
DF.mdf <- missing_data.frame(DF.test) # Fine
DF2.mdf <- missing_data.frame(DF.test2) # Fine

Tibble.mdf <- missing_data.frame(Tibble.test) # ERROR
Tibble.mdf <- missing_data.frame(data.frame(Tibble.test)) # Fine

#Purely numeric data
Tibble.test2 <- data_frame(Numbers,Numbers2,Numbers3)
str(Tibble.test2) # Number, Number, Number

# Run the tests
Tibble.mdf2 <- missing_data.frame(Tibble.test2) # ERROR
Tibble.mdf2 <- missing_data.frame(data.frame(Tibble.test2)) # Fine

miは、データフレームではなく、tibble で何かに反対しているようです。エラーメッセージは役に立ちません。ティブルをデータフレームに強制的に戻すことで簡単に修正できますが、ドキュメントでこの問題について言及されていません。私はmiの内部にまったくなじみがありません。

基本的なもの、またはドキュメントの何かが欠けていますか、それともこれは本当に予期しない動作ですか? すべての支援、コメント、解釈を歓迎します。

4

1 に答える 1

0

答えはこれです:-

Tibble とデータフレームはほぼ同じように動作しますが、まったく同じではありません。変更されたデータフレームの動作の一部は、列サブセット演算子です。

D[, 1] は、D がdata.frameの場合はベクトルを返しますが、D がティブルの場合はティブルを返します。mi パッケージはベクトルを必要とするため、不平を言います。

この回答をくれた Imo と David Klotz に感謝します。

于 2017-11-08T20:51:56.590 に答える