2016-08-04 338 views
0

所以我以前多次看到這個問題,但是我嘗試過的其他答案似乎都不起作用。當我運行下面的函數時,我得到:「錯誤:找不到對象'x'。」R - 在用戶定義的函數中找不到對象

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」)沒有被正確讀取的特定部分:

xtemp <- filter_(fullTable, .dots=list(
      bquote(.(as.name(xmove1)) == x), 
      bquote(.(as.name(xmove2)) == y), 
      bquote(.(as.name(xmove3)) == 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

對。你沒有閱讀手冊。我認爲這不僅僅是一個錯字yopu現在已經糾正。 –