使用missing_data.frame命令将错误读入mi包时出错

时间:2017-11-06 16:12:37

标签: r dataframe missing-data tibble

在处理辉煌的 mi 包时,我遇到了意想不到的行为(至少是我意想不到的),因为缺少数据插补和错误。

让我们假设一个名为B的tibble。违规命令是: -

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 的内脏。

我是否遗漏了基本内容或文档中的内容,或者这是一种真正意想不到的行为?欢迎所有的帮助,评论和解释。

1 个答案:

答案 0 :(得分:0)

答案是: -

Tibbles和数据帧的行为几乎相同,但并不完全相同。已更改的数据帧的行为的一部分是列子集运算符。

如果D是data.frame,则D [,1]返回向量,但如果D是tibble,则返回 tibble 。 mi包需要一个载体,所以抱怨。

感谢Imo和David Klotz的回答。