data.frame(..., check.names = FALSE) 中的 R 错误:参数暗示行数不同:5、3

R Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 5, 3

所以我正在使用 de 'sjPlot' 包中的 sjp.likert 函数来制作一系列不同数据框的图表,其中它们的列对应于遵循李克特格式的不同问题。

准确的数据框转载如下:

col_1 <- c(2,1,1,5)
col_2 <- c(2,1,1,2)
col_3 <- c(2,1,1,2)
col_4 <- c(2,1,1,2)
col_5 <- c(2,1,1,5)

df <- as.data.frame(cbind(col_1,col_2,col_3,col_4,col_5))

按照 'sjPlot' 包的说明,我给问题和可能的答案都贴上了标签(值标签)。

question.labels <- c("Las personas de mi Equipo están calificadas adecuadamente para desempeñar su trabajo",
"Mi equipo es eficiente para solucionar problemas sin perder tiempo en encontrar culpables",
 "Mi área busca formas de hacer los procesos de manera inteligente y eficiente", 
 "El ambiente en mi área es generalmente bueno", 
 "En mi Equipo tenemos una dinámica de trabajo que permite nuestro mejor desempeño")

value.labels <- c("strongly agree", "agree", "disagree", "strongly disagree",
  "neither agree or disagree")

然后我使用 sjp.likert 函数生成绘图:

sjp.likert(df, axisLabels.y = question.labels, legendLabels = value.labels)

但是我收到以下错误:

 Error in data.frame(..., check.names = FALSE) :    arguments imply differing number of rows: 5, 3

虽然使用以下数据框没有问题:

col_a <- c(2,3,1,2,2,1)
col_b <- c(2,4,2,5,2,2)
col_c <- c(2,3,2,2,2,2)
col_d <- c(2,2,1,2,2,1)
col_e <- c(3,5,1,2,2,1)

df2 <- cbind(col_a,col_b,col_c,col_d,col_e)

在 df2 中存在所有可能的值,从 1 到 5,这是与 df 的唯一区别,其中只有 1,2 和 5 是可能的值。因此我认为这可以解释错误,数据框中有 3 个可能的值,而 value.labels 包含 5 个不同的选项。但是即使我从函数中取出参数 legendLabels(因此实际值和所有可能的标签之间没有不一致),我在尝试绘制 df 时仍然会遇到相同的错误。

有什么提示吗?

函数需要知道项目类别的数量才能工作。通常,这是通过检查 data.frame.

自动完成的

如果这对您不起作用,请尝试 catcount 参数:

catcount = 4

应该可以。我改进了当前开发人员版本 (see Github) 中的 catcount 检测,如果需要此参数,它也会警告用户。