数字数据为 R 中的二元运算符提供错误的非数字参数

Numeric data gives error non-numeric argument to binary operator in R

R 新手

我有一个名为 SortedDF 的数据框,其中包含 125143 个观察值和 5 个变量

Head(SortedDF)
      number Retention time (min) Charge      m/z              Group
28637  98481             16.87978      2 350.1859 Progenesis_peptide
82465 DVQLPK             14.35000      2 350.2022      PEAKS_peptide
81468 DVQLPK             14.32000      2 350.2027      PEAKS_peptide
76662 DVQLPK             14.33000      2 350.2028      PEAKS_peptide
77423 DVQLPK             14.36000      2 350.2029      PEAKS_peptide
73768 DVQLPK             14.27000      2 350.2039      PEAKS_peptide

我想使用 lead 命令根据它们的 m/z 相似性来匹配肽。

MatchedDF <- SortedDF %>% mutate(matches_with_next_row = (abs(("m/z") - lead("m/z")) < 0.01))

在编写另一个数据库时,此代码运行良好。但是现在,我收到错误消息

Error in mutate(): ! Problem while computing matches_with_next_row = ... & Group != lead(Group). Caused by error in ("m/z") - lead("m/z"): ! non-numeric argument to binary operator Run rlang::last_error() to see where the error occurred.

检查时

class(SortedDF$"m/z")

(1) "numeric"

我检查了以下线程但没有成功: x non-numeric argument to binary operator while using mutate --> 在 m/z 附近尝试了 '' 但没有成功

其他跟帖主要讲的不是我的问题。如果有人知道我做错了什么,请告诉我。

"m/z" 是一个 non-numeric 字符,而带有反引号的 m/z 指的是特定列的数据变量:

MatchedDF <- SortedDF %>% mutate(
  matches_with_next_row = (abs((`m/z`) - lead(`m/z`)) < 0.01)
)

建议不要对列名使用特殊字符,使这些表达式更容易编写。