首页 > 解决方案 > R中二进制运算符的非数字参数,用于从CSV读取的数据

问题描述

对 R 来说非常新,我知道循环在 R 中并不总是被认为是一个好的选择,但我的代码中只有一部分给我带来了麻烦。从本质上讲,我正在分析纵向数据:每个受试者都有来自两个不同时间点的两个测量表(每个表有大约 200 个不同的研究变量)。我已将它们全部读入,在 R 中存储为不同的变量,并试图从每个参与者的第二个表中减去第一个表。

如果我将其作为单独的代码行运行,它可以正常工作:

data_difference_n <- data_2_n - data_1_n

其中 n 是参与者的 ID 号,但这意味着要为大约 1,000 个 ID 不是连续数字的参与者运行这条线。所以我试图把它放在一个循环中

participants <- c(100, 105, 106, 119 ...)
for (n in participants) {
  ...
  data_difference_n <- paste("data_difference", subject, sep="_")
  data_1_n <- paste("data_1", subject, sep="_")
  data_2_n <- paste("data_2", subject, sep="_")
  data_difference_n <- data_2_n - data_1_n
  }

这给了我一个“二元运算符的非数字参数”的错误。

每个数据表都是具有相同属性的 CSV,主要是数字和一些不适用的单元格。第一段代码给了我想要的结果:一个新表,其中所有数值都是第一个表中的值从第二个表中的值中减去该参与者的值。我对为什么第二段代码不起作用感到困惑,因为结果应该调用与第一段相同的变量?

我已经尝试在这里和其他网站上阅读很多关于此错误的其他帖子,但似乎无法解决它。说使用apply将数据帧转换为字符矩阵,它与循环的原理相同吗?感觉好像我在这里遗漏了一些非常基本和简单的东西 - 如果是这样,我们深表歉意,并感谢任何帮助!

标签: rloopscsvdataframe

解决方案


推荐阅读