如何将分数表达式转换为 R 中的字符向量?
How can I convert a fraction expression into a character vector in R?
您好,感谢您的帮助。
我想使用 R 将表达式:x / y(例如 1298 / 1109)转换为字符向量:“x / y”(例如“1298 / 1109”)。
我已经用 as.character(x/y) 和 as.character.Date(x/y) 试过了,但这只会把分数的结果变成一个字符矢量.
你是这个意思吗?
> deparse(quote(1298 / 1109))
[1] "1298/1109"
或
> f <- function(x) deparse(substitute(x))
> f(1298 / 1109)
[1] "1298/1109"
Allan 在评论中提到的使用 paste
的替代解决方案,包装在一个函数中。不如 Tomas 的解决方案灵活,但简单。
f <- function(x,y) {
paste(x, y, sep = " / ")
}
f(1298, 1109)
[1] "1298 / 1109"
作为对已经给出的优秀答案的补充,如果有人希望能够在某个时刻计算表达式,您可以采用这种方法。
x <- 1298
y <- 1109
z <- as.expression(substitute(x / y, list(x = x, y = y)))
z
# expression(1298/1109)
class(z)
# [1] "expression"
eval(z)
# [1] 1.1704
as.character(z)
# [1] "1298/1109"
或者不将其设为 expression
t <- substitute(x / y, list(x = x, y = y))
t
# 1298/1109 # not a string, but a "call"
class(t)
# [1] "call"
eval(t)
# [1] 1.1704
deparse(t)
# [1] "1298/1109"
有了MASS
,就有了fractions
的功能
MASS::fractions(1298/1109)
[1] 1298/1109
您好,感谢您的帮助。
我想使用 R 将表达式:x / y(例如 1298 / 1109)转换为字符向量:“x / y”(例如“1298 / 1109”)。
我已经用 as.character(x/y) 和 as.character.Date(x/y) 试过了,但这只会把分数的结果变成一个字符矢量.
你是这个意思吗?
> deparse(quote(1298 / 1109))
[1] "1298/1109"
或
> f <- function(x) deparse(substitute(x))
> f(1298 / 1109)
[1] "1298/1109"
Allan 在评论中提到的使用 paste
的替代解决方案,包装在一个函数中。不如 Tomas 的解决方案灵活,但简单。
f <- function(x,y) {
paste(x, y, sep = " / ")
}
f(1298, 1109)
[1] "1298 / 1109"
作为对已经给出的优秀答案的补充,如果有人希望能够在某个时刻计算表达式,您可以采用这种方法。
x <- 1298
y <- 1109
z <- as.expression(substitute(x / y, list(x = x, y = y)))
z
# expression(1298/1109)
class(z)
# [1] "expression"
eval(z)
# [1] 1.1704
as.character(z)
# [1] "1298/1109"
或者不将其设为 expression
t <- substitute(x / y, list(x = x, y = y))
t
# 1298/1109 # not a string, but a "call"
class(t)
# [1] "call"
eval(t)
# [1] 1.1704
deparse(t)
# [1] "1298/1109"
有了MASS
,就有了fractions
的功能
MASS::fractions(1298/1109)
[1] 1298/1109