1

これは、私がやりたいことの(非)動作例です。制限は、これはすべて関数内で発生するK必要があり、 に追加してはならないということxです。これを行う正しい方法は何ですか?問題は、Kここで正しい環境に関連付けられていないことです。

編集:以下のコメントに基づいています。提供された答えは機能しますが、その理由はまだわかりません

f = function() { K=5; x = data.frame(a=1:10, b=(1:10)^2); 
                 regstr = "b ~ a:I(a>K)";
                 lm(regstr, data=x);
                }
f()
Error in unique(c("AsIs", oldClass(x))) (from #3) : object 'K' not found 



> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
 [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base  
4

1 に答える 1

3
f = function() { K=5; x = data.frame(a=1:10, b=(1:10)^2); 
                  regstr = "b ~ a:I(a>K)";
                  lm(as.formula(regstr), data=x);
}

あなたは逃した

as.formula
于 2013-05-17T00:22:38.823 に答える