Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-将向量中的值与单个值进行比较(使用apply族)_R - Fatal编程技术网

R-将向量中的值与单个值进行比较(使用apply族)

R-将向量中的值与单个值进行比较(使用apply族),r,R,我有这个数据库(简称) 我的第一个课程中心是: > K1 = 4 CenterOfClasses = testDB[sample(1:nrow(testDB), K1, replace=FALSE), ] CenterOfClasses Civilite Age Enfants Region Recence Frequence_visite_site Mailing_Clic Mlle 45 Non Nord 11 6

我有这个数据库(简称)

我的第一个课程中心是:

> K1 = 4
CenterOfClasses = testDB[sample(1:nrow(testDB), K1, replace=FALSE), ]
CenterOfClasses
Civilite Age Enfants Region Recence Frequence_visite_site Mailing_Clic
Mlle     45     Non   Nord      11                     6          Non
Mr       37     Non   Nord      10                     7          Non
Mr       56     Non   Nord      14                     6          Non
Mlle     43     Non   Nord      11                     8          Non
在计算向量(testDB的单独记录)和元素(类中心的每个元素)之间的差异时,我遇到了一个问题

以下是我的变量:

DVar = list()
VectClasses ##Vector
VectIndVar  ##Vector

VectClasses1 = CenterOfClasses[1,] etc
VectIndVar = testBD
这就是我正在尝试使用的函数

mapply(function(x, y){
  sum(identical(x,y))},
VectClasses[x,y],VectIndVar[,y])
这就是我想做的:

DVar[[nClass]][nVar]=sum(VectClasses[nClass,nVar] == VectIndVar[,nVar])
(将我数据库的第一列与第一个变量分配给第一个类的值以及每个变量和类的值进行比较)

我改变了我的方法,现在将数据库的每个记录与VectClass的每一行进行比较

我试过这个:

xall = data.frame()
for (k in 1:nrow(VectClasses)) 
 {
   for (i in 1:nrow(VectIndVar))
   {
     xall[i,k] = sum(VectClasses[k,] == VectIndVar[i,])
    }
 }
它返回:

  > head(xall)
  V1 V2 V3 V4
1  3  3  2  2
2  2  2  1  1
3  3  4  3  3
4  3  4  3  3
5  4  4  3  3
6  3  2  3  3
现在,我尝试剪切的循环,并用apply族函数替换它

xball = sapply(xball, function(i,k){sum(VectClasses[k,] == VectIndVar[i,])})
但这并不能满足所有人的需求

我希望尽可能避免在类的数量或变量的数量上循环


你能帮我吗?

ivar你能让你的例子重现吗?你能输出你的数据吗?我认为
vectclass[x,y],VectIndVar[,y])
似乎不正确。无论如何,举个例子会有帮助
ivar <- VectIndVar[rep(1:nrow(VectIndVar), nrow(VectClasses)), ]
vclass <- VectClasses[rep(1:nrow(VectClasses), each = nrow(ivar) / K1), ]
xball <- matrix(rowSums(vclass == ivar), ncol = nrow(VectClasses))
ivar <- VectIndVar[rep(1:nrow(VectIndVar), nrow(VectClasses)), ]
vclass <- VectClasses[rep(1:nrow(VectClasses), each = nrow(ivar) / K1), ]
xball <- matrix(rowSums(vclass == ivar), ncol = nrow(VectClasses))