R - 将公式转换为字符串,反之亦然
R - Converting formulae to character strings and vice versa
我对 R
中的一些奇怪行为感到有点困惑。当您将公式转换为字符串时,它会自动将公式的两部分分隔成单独的元素,如下所示:
#Convert formula to character string
FORMULA <- formula(y ~ a + b + c + d)
CHAR <- as.character(FORMULA)
CHAR
[1] "~" "y" "a + b + c + d"
但是,当您尝试转换回来时,您得不到原始公式:
as.formula(CHAR)
~y
为什么会发生这种情况 --- 即,为什么 R
不转换回您开始使用的公式?是否有函数(或其他一些简单的方法)将字符串转换回公式?
在这种特殊情况下,您可以使用 paste
:
将原始公式拼凑起来
as.formula(paste(CHAR[2], CHAR[1], CHAR[3]))
y ~ a + b + c + d
使用format
从公式到字符串,使用as.formula
从另一个方向:
FORMULA <- formula(y ~ a + b + c + d) # from question
format(FORMULA)
## [1] "y ~ a + b + c + d"
as.formula("y ~ a + b + c + d")
## y ~ a + b + c + d
此外,y ~ a + b + c + d
已经是一个公式。在已经是公式的东西上使用 formula(...)
没有意义:
identical(y ~ a + b + c + d, formula(y ~ a + b + c + d))
## [1] TRUE
我对 R
中的一些奇怪行为感到有点困惑。当您将公式转换为字符串时,它会自动将公式的两部分分隔成单独的元素,如下所示:
#Convert formula to character string
FORMULA <- formula(y ~ a + b + c + d)
CHAR <- as.character(FORMULA)
CHAR
[1] "~" "y" "a + b + c + d"
但是,当您尝试转换回来时,您得不到原始公式:
as.formula(CHAR)
~y
为什么会发生这种情况 --- 即,为什么 R
不转换回您开始使用的公式?是否有函数(或其他一些简单的方法)将字符串转换回公式?
在这种特殊情况下,您可以使用 paste
:
as.formula(paste(CHAR[2], CHAR[1], CHAR[3]))
y ~ a + b + c + d
使用format
从公式到字符串,使用as.formula
从另一个方向:
FORMULA <- formula(y ~ a + b + c + d) # from question
format(FORMULA)
## [1] "y ~ a + b + c + d"
as.formula("y ~ a + b + c + d")
## y ~ a + b + c + d
此外,y ~ a + b + c + d
已经是一个公式。在已经是公式的东西上使用 formula(...)
没有意义:
identical(y ~ a + b + c + d, formula(y ~ a + b + c + d))
## [1] TRUE