簡體   English   中英

將字符串作為函數參數傳遞

[英]Passing a string as function argument

我想使用字符串作為函數的參數,以便將該字符串用於結果的繪制,但是R繪制參數變量名而不是其字符串值。 我嘗試了其他解決方案(稀疏,as.character ...),但仍然沒有解決方案。 你有什么主意嗎?

mcnemar_test <- function (c1,c2,class1, class2)
{
    name1=label(class1)
    name2=deparse(substitute(class2))

    v1 = c1$encerts
    v2 = c2$encerts

    e00 = sum(ifelse(v1+v2==0,1,0)) #bad classification for both
    e01 = sum(ifelse(v1<v2,1,0)) #bad classification for 1
    e10 = sum(ifelse(v1>v2,1,0)) #bad classification for 2
    e11 = sum(ifelse(v1+v2==2,1,0)) #good classification for both

    matriu <- matrix(c(e00,e01,e10,e11),nrow = 2, 
        dimnames = list(name1 = c("Disapprove", "Approve"),
                       name2 = c("Disapprove", "Approve")))
    print (matriu)
    t <- mcnemar.test(matriu)
    return (t)
}
mcnemar_test(classifiers.NaiveBayes,classifiers.CART,"aa","bb")

我想看到“ aa”和“ bb”,但看到“ name1和name2”

R認為您希望名稱為“ name1”和“ name2”,就像我要創建名稱為“ a”和“ b”的列表一樣:

my.list <- list(a=1, b=2)

嘗試使用structure並將名稱作為字符向量傳遞:

matriu <- matrix(c(e00,e01,e10,e11),nrow = 2, 
                 dimnames = structure(list(c("Disapprove", "Approve"),
                                           c("Disapprove", "Approve")),
                                      names=c(class1, class2)))

或在創建列表后設置元素的名稱:

matriu <- matrix(c(e00,e01,e10,e11),nrow = 2, 
                 dimnames = list(c("Disapprove", "Approve"),
                                 c("Disapprove", "Approve")))
names(dimnames(matriu)) <- c(class1, class2)

編輯:在您的功能代碼內刪除label(。)和deparse(substitute(。))嘗試,並使用以下方法:

dimnames = setNames( list(  c("Disapprove", "Approve"),  
                            c("Disapprove", "Approve")), 
                     c(class1, class2) )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM