将用户定义函数的输出附加到现有向量,而不打印R中的输出

e7arh2l6  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(119)

假设我有一个空向量-

ot_vec = c()

现在我有许多用户定义的函数,例如Square_CalculatorSquareRoot_Calculator等,定义如下-
x一个一个一个一个x一个一个二个x
现在我想要一个代码,将这些函数的输出一个接一个地附加到现有的空白向量ot_vec w/o打印输出。
在运行了这三行代码之后-

square_calculator(2)
squareRoot_calculator(100)
square_calculator(5)

零矢量ot_vec应输出为-

    • 注意:**我不需要类似-ot_vec = c(ot_vec, Square_Calculator(2), SquareRoot_Calculator(100), Square_Calculator(5))的东西,也就是说,我想修改用户定义的函数,让它们不给出输出,而是直接将输出附加到空向量。

我试着像这样-

blmhpbnm

blmhpbnm1#

也许环境就是你要寻找的,但是要改变的变量必须传递给改变它的函数。

square_calculator <- function(x, y, envir = parent.frame()){
  sq = x*x
  yname <- as.character(substitute(y))
  envir[[yname]] <- c(envir[[yname]], sq)
}
squareRoot_calculator <- function(x, y, envir = parent.frame()){
  sq_rt = sqrt(x)
  yname <- as.character(substitute(y))
  envir[[yname]] <- c(envir[[yname]], sq_rt)
}

ot_vec <- NULL
square_calculator(2, ot_vec)
squareRoot_calculator(100, ot_vec)
square_calculator(5, ot_vec)
ot_vec
#> [1]  4 10 25

创建于2023年1月9日,使用reprex v2.0.2

rjee0c15

rjee0c152#

需要给父框架中的变量赋值,也就是给变量名赋值,一种解决方法是用变量名调用修改后的square_calculator

ot_vec <- c()

square_calculator <- function(x, vec) {
  sq <- x*x
  assign(vec,
         c(get(vec), sq),
         env = parent.frame())
}
square_calculator(10, "ot_vec")
> ot_vec
[1] 100

相关问题