I would like to use a string as argument of a function in order to use this string for the plotting of the result, but R plots the argument variable name instead of its string value. I tried different solutions (diparse, as.character...) but still no solution. Do you have any idea?
我想使用字符串作为函数的参数,以便使用此字符串来绘制结果,但R绘制参数变量名称而不是其字符串值。我尝试了不同的解决方案(diparse,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")
I would like to see "aa" and "bb" but see "name1 and name2
我想看“aa”和“bb”但是看“name1和name2
2 个解决方案
#1
2
R thinks you want the names to be "name1" and "name2", just like if I were to create a list with names "a" and "b":
R认为你想要名字是“name1”和“name2”,就像我要创建一个名为“a”和“b”的列表一样:
my.list <- list(a=1, b=2)
Try using structure
and passing the names as a character vector:
尝试使用结构并将名称作为字符向量传递:
matriu <- matrix(c(e00,e01,e10,e11),nrow = 2,
dimnames = structure(list(c("Disapprove", "Approve"),
c("Disapprove", "Approve")),
names=c(class1, class2)))
Or setting the names of the elements after you create the list:
或者在创建列表后设置元素的名称:
matriu <- matrix(c(e00,e01,e10,e11),nrow = 2,
dimnames = list(c("Disapprove", "Approve"),
c("Disapprove", "Approve")))
names(dimnames(matriu)) <- c(class1, class2)
#2
-1
Edit: Within your function code drop the label(.) and deparse(substitute(.)) attempts and use this:
编辑:在你的功能代码中删除标签(。)和deparse(替换(。))尝试并使用它:
dimnames = setNames( list( c("Disapprove", "Approve"),
c("Disapprove", "Approve")),
c(class1, class2) )
#1
2
R thinks you want the names to be "name1" and "name2", just like if I were to create a list with names "a" and "b":
R认为你想要名字是“name1”和“name2”,就像我要创建一个名为“a”和“b”的列表一样:
my.list <- list(a=1, b=2)
Try using structure
and passing the names as a character vector:
尝试使用结构并将名称作为字符向量传递:
matriu <- matrix(c(e00,e01,e10,e11),nrow = 2,
dimnames = structure(list(c("Disapprove", "Approve"),
c("Disapprove", "Approve")),
names=c(class1, class2)))
Or setting the names of the elements after you create the list:
或者在创建列表后设置元素的名称:
matriu <- matrix(c(e00,e01,e10,e11),nrow = 2,
dimnames = list(c("Disapprove", "Approve"),
c("Disapprove", "Approve")))
names(dimnames(matriu)) <- c(class1, class2)
#2
-1
Edit: Within your function code drop the label(.) and deparse(substitute(.)) attempts and use this:
编辑:在你的功能代码中删除标签(。)和deparse(替换(。))尝试并使用它:
dimnames = setNames( list( c("Disapprove", "Approve"),
c("Disapprove", "Approve")),
c(class1, class2) )