在创建公式时出现额外的空格,以及str2lang(x) 的错误
我目前正在尝试对化学数据进行校准,并且已经尝试按照这篇帖子中的说明来做。
我可以完全复现这个示例,效果也不错,但在把它应用到我的数据上时,遇到了各种问题。
这是我写的代码:
analytes <- c("2-ADNT", "4-ADNT", "26-DANT")
Vars <- as.list(analytes)
allCalibsList <- lapply(paste(Vars, "~ Extracted"), as.formula)
这段代码运行良好,但在得到的allCalibsList中,我的analytes的名称在 '-' 两边有额外的空格,这意味着我不能再用一个用于拟合线性模型的函数,因为名字已经改变。
我尝试把它们的名称中的 '-' 去掉:
analytes <- c("2ADNT", "4ADNT", "26DANT")
Vars <- as.list(analytes)
allCalibsList <- lapply(paste(Vars, "~ Extracted"), as.formula)
然后我就出现了str2lang(x) 的错误:
Error in str2lang(x) : <text>:1:2: unexpected symbol
1: 2ADNT
^
当我把 analyte 名称中的数字去掉时,错误就消失了,但这对我的数据来说并不是一个好选项。
解决方案
你遇到的问题是由于非标准的R 名称,这些名称不能以数字开头,也不能包含像 - 这样的符号。与其手动添加反引号并将字符串转换为符号,不如使用R 的基础函数 as.symbol 将非标准名称转换为符号,然后使用Rui的 reformulate 技巧。
analytes <- c("2-ADNT", "4-ADNT", "26-DANT")
lapply(analytes, \(x) reformulate(as.symbol(x),
termlabels = "Extracted",
env = parent.frame(2))
)
#> [[1]]
#> `2-ADNT` ~ Extracted
#>
#> [[2]]
#> `4-ADNT` ~ Extracted
#>
#> [[3]]
#> `26-DANT` ~ Extracted
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。