在处理辉煌的 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 的内脏。
我是否遗漏了基本内容或文档中的内容,或者这是一种真正意想不到的行为?欢迎所有的帮助,评论和解释。
答案 0 :(得分:0)
答案是: -
Tibbles和数据帧的行为几乎相同,但并不完全相同。已更改的数据帧的行为的一部分是列子集运算符。
如果D是data.frame,则D [,1]返回向量,但如果D是tibble,则返回 tibble 。 mi包需要一个载体,所以抱怨。
感谢Imo和David Klotz的回答。