1

私はRが初めてで、いわゆる「環境」とそれらを適切に使用する方法を理解するのに苦労しています。R 言語で私が見逃しているのは、(Java のような) 静的変数です。

最初の実行時に初期化する必要があるいくつかの関数を含むプログラムを作成しています。各関数でこれを実現するために、この特定の関数によってのみアクセスされる新しい環境を作成しました (たとえば、「f1」は「myfunction1」内からのみアクセスされます)。

私のソリューションで気に入らないのは、関数本体の外側に追加のコードがいくつかあり、読みにくいことです。同じことを達成するためのより簡単な方法はありますか? はいの場合、それがどのように機能するかを示すために、変更された例を提供していただければ幸いです。ありがとうございました。

f1 <- new.env()
f1$initialized <- FALSE
f1$o <- NULL
f1$length <- NULL
f1$compute

myfunction1 <- function(x) {
  if(f1$initialized == FALSE){
    f1$initialized <- TRUE
    f1$compute <- 2*pi^2+3
  }
  if(is.null(f1$length) || f1$length!=length(x)){
    f1$length <- length(x)
    if(f1$length==2) {f1$o<-read.table("data_1.txt")}
    else {f1$o<-read.table("data_2.txt")}
  }
  print("Lets print something!")
  return(f1$o * f1$compute * x + 1000)
}
4

1 に答える 1