首页 > 解决方案 > psych 包中 scoreItems 函数中的错误:未找到列

问题描述

我的一个学生问我以下问题:

我正在做这个练习。每当我从 psych 包中尝试此功能时:

scoreItems(meta.bfi[,v$big5], ccases[,meta.bfi$name])

它出现了这个错误:

Error: Columns `2`, `3`, `4`, `5`, `1`, `6`, `7`, `8`, `9`, `10`, `13`, 
       `14`, `15`, `11`, `12`, `16`, `17`, `18`, `19`, 
        `20`, `21`, `23`, `24`, `22`, `25` not found

是什么原因造成的?

标签: rpsych

解决方案


这似乎scoreItems与 tibbles 不兼容(至少从 1.8.4 版开始)。

如果您将密钥转换为纯 data.frame,这应该可以解决问题:

meta.bfi <- as.data.frame(meta.bfi)

也就是说, scoreItems 确实需要行名称,因此将来,如果 tibble 从其功能中完全删除 row.names(目前已弃用),您可能需要再次添加 row.names。

进一步的背景

该练习基于 ProjectTemplate,在 0.8.2 版本中,ProjectTemplate 开始默认将 data.frames 转换为 tibbles ( https://tibble.tidyverse.org/ )。虽然 tibbles 类似于 data.frames,但它们并不相同。它们确实会导致一些需要纯 data.frame 的函数出现问题。

有关于在 ProjectTemplate 的未来版本中是否可以选择这种转换为小标题的讨论: https ://github.com/KentonWhite/ProjectTemplate/issues/271


推荐阅读