将 dcast 与子集参数一起使用时,当原始数据帧上的 dcast 和子集数据帧上的 dcast 在行中不匹配时,我会收到以下错误。
data.frame(..., check.names = FALSE) 中的错误:参数暗示不同的行数:2、3
我已经用 mtcars 数据集重现了这个错误。下面是带有复制的代码。
library(reshape2)
# dataframe
mtcars2 <- mtcars[, c('vs','am','gear','carb')]
mtcars2$cars <- row.names(mtcars)
row.names(mtcars2) <- NULL
mtcars2$dummyvariable <- 1
mtcars2.melt <- melt(mtcars2, id=c('cars','vs','am','gear','carb'))
colnames(mtcars2.melt)
# [1] "cars" "vs" "am" "gear" "carb" "variable" "value"
dcast(mtcars2.melt, vs ~ am, drop=FALSE, margins=TRUE)
# Aggregation function missing: defaulting to length
# vs 0 1 (all)
# 1 0 12 6 18
# 2 1 7 7 14
# 3 (all) 19 13 32
cadillac <- subset(mtcars2.melt, regexpr('Cadillac',cars)>0)
dcast(cadillac, vs ~ am, drop=FALSE, margins=TRUE)
# Error in data.frame(..., check.names = FALSE) :
# arguments imply differing number of rows: 2, 3
dcast(cadillac, vs ~ am, margins=TRUE)
# vs 0 (all)
# 1 0 1 1
# 2 (all) 1 1
最后一个 dcast 表明可以通过跳过 drop=FALSE 条件来避免错误,但我想要的输出是
vs 0 1 (all)
1 0 1 0 1
2 1 0 0 0
3 (all) 1 0 1
任何帮助都会很棒!:)
谢谢