2016-08-04 20 views
0

これまでにこの質問を何度も聞いたことがありますが、私が試した答えはどれもうまくいきません。私が以下の関数を実行すると、 "エラー:オブジェクト 'x'が見つかりませんでした。R - オブジェクトがユーザー定義関数に見つかりません

xtemp <- filter_(fullTable, .dots=list(
      bquote(.(as.name(xmove1)) == x), 
      bquote(.(as.name(xmove2)) == y), 
      bquote(.(as.name(xmove3)) == z))) 

xpermntotable <- function(x,y,z){ 
    xmovematrix <- matrix(unlist(xpermn), ncol = 3, byrow = TRUE) 
    for(i in 1:120){ 
    xmove1 <- xmovematrix[i,1] 
    xmove2 <- xmovematrix[i,2] 
    xmove3 <- xmovematrix[i,3] 
    print(x) 
    xtemp <- filter_(fullTable, .dots=list(
     bquote(.(as.name(xmove1)) == x), 
     bquote(.(as.name(xmove2)) == y), 
     bquote(.(as.name(xmove3)) == z))) 
    xwin <- rbind(xwin, xtemp) 
    } 
} 

xpermntotable(1,2,3) 

問題は、「x」は(そしておそらく「Y」及び「Z」)が正しく読み込まれていない以下の機能の特定の部分に根ざしているように見えます私が試してみました

ソリューション:as.name中の "x" 変数を含む

  • (x)は、やeval(x)の

答えて

0

したがって、bquote関数を詳しく調べてみると、私の解がそこにあったことがわかりました。

.() 

以下のコードでラップする必要がx、yおよびz変数動作:bquote機能here

xpermntotable <- function(x,y,z){ 
    xmovematrix <- matrix(unlist(xpermn), ncol = 3, byrow = TRUE) 
    for(i in 1:120){ 
    xmove1 <- xmovematrix[i,1] 
    xmove2 <- xmovematrix[i,2] 
    xmove3 <- xmovematrix[i,3] 
    xtemp <- filter_(fullTable, .dots=list(
     bquote(.(as.name(xmove1)) == .(x)), 
     bquote(.(as.name(xmove2)) == .(y)), 
     bquote(.(as.name(xmove3)) == .(z)))) 
    xwin <- rbind(xwin, xtemp) 
    return(xwin) 
    } 
} 


xwin <- xpermntotable(1,2,3) 

詳細情報。

+1

右。あなたはマニュアルを読まなかった。私はこれが今修正したタイプミスト以上のものだとは思わない。 –

関連する問題