首页 > 解决方案 > R:返回两个值的函数,用长垂直线 (|) 分隔

问题描述

我想要一个函数返回用长垂直线 (|) 分隔的两个值

FUN1 <- function(x) {
  attach(x)
  return(min(x2))
}

FUN2 <- function(x) {
  attach(x)
  return(x1[which.min(x2)])
}


set.seed(1)
x <- data.frame(
  x1 = 1:10,
  x2 = rnorm(10)
)
FUN1(x)
FUN2(x)

我想将这两个函数 (FUN1FUN2) 合二为一,结果如下:

-0.8356286|3

标签: r

解决方案


使用sprintf以及signif避免0.000's,

do.call(sprintf, c('%s|%s', rev(signif(x[which.min(x$x2), ], 3))))
# [1] "-0.836|3"

或者如果您打开稍微不同的格式:

toString(rev(signif(x[which.min(x$x2), ], 3)))
# [1] "-0.836, 3"

推荐阅读