首页 > 解决方案 > 如何修复错误代码“需要 TRUE/FALSE 的缺失值”

问题描述

我正在寻找一个数据集(df_freeGammas)并总结该集合的某些组件。数据集分为受试者和不同的测试编号(受试者 1,测试 1)。有些科目有超过 1 项测试。每个测试都有对应于测试和主题的 16 行数据的子集。我希望能够使用循环或嵌套循环将主题编号放在结果矩阵中。我已经找到了一种方法来做到这一点,但我不断收到错误消息:“if (df_freeGammas[n, 2] != df_freeGammas[n + 1, 2]) { : 需要 TRUE/FALSE 的缺失值”请帮助。

我尝试添加更多 if 循环和 while 循环。

for (n in 1:nrow(df_freeGammas)){
+    if (df_freeGammas[n,2] != df_freeGammas[n+1,2]){
+         Results[n/16,1] = df_freeGammas[n,1]}
+       else if (df_freeGammas[n,1] != df_freeGammas[n+1,1]){
+           Results[n/16,1] = df_freeGammas[n,1]}
+         else 
+           invisible()

我期待结果,但没有错误消息。

标签: loopsif-statementnested-loops

解决方案


看起来您的一项相等性检查正在评估为“NA”,而不是 TRUE/FALSE。

一种可能的解决方案是为 NA 案例添加一个子句,如此所述。

对于您的用例,这可能如下所示:

(df_freeGammas[n,2] != df_freeGammas[n+1,2]) & !is.na(df_freeGammas[n,2] != df_freeGammas[n+1,2])

如果两个值不相等,上述内容将仅返回 TRUE,并且相等检查的计算结果为 Non-NA。

与往常一样,如果它解决了问题,请务必将此答案标记为已接受。

谢谢!


推荐阅读