Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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中平均值的关系对向量进行排序_R_Matlab - Fatal编程技术网

基于顺序和与R中平均值的关系对向量进行排序

基于顺序和与R中平均值的关系对向量进行排序,r,matlab,R,Matlab,我是新手,我觉得这很有趣 我有MATLAB代码,可以根据顺序对向量进行排序,效果很好。现在我想将其转换为R代码,这是一个典型的斯皮尔曼排名: # MATLAB CODE function r=drank(x) u = unique(x); [xs,z1] = sort(x); [z1,z2] = sort(z1); r = (1:length(x))'; r=r(z2); for i=1:length(u) s=find(u(i)==x); r(s,1) = mean(

我是新手,我觉得这很有趣

我有MATLAB代码,可以根据顺序对向量进行排序,效果很好。现在我想将其转换为R代码,这是一个典型的斯皮尔曼排名:

# MATLAB CODE

function r=drank(x)

u = unique(x);
[xs,z1] = sort(x);
[z1,z2] = sort(z1);
r = (1:length(x))';
r=r(z2);

for i=1:length(u)

    s=find(u(i)==x);

    r(s,1) = mean(r(s));

end
这就是我所尝试的:

# R CODE

x = c(10.5, 8.2, 11.3, 9.1, 13.0, 11.3, 8.2, 10.1)

drank <- function(x){

    u = unique(x)
    xs = order(x)
    r=r[xs]

    for(i in 1:length(u)){
        s=which(u[i]==x)
        r[i] = mean(r[s])  
    }

    return(r)
}
1.5
是两次出现的
8.2
的平均值,即平局

6.5
是两次发生的
11.3
的平均值

谁能帮我查一下吗


谢谢,

R有一个内置的排名函数,名为
rank()
,它精确地给出了您想要的:

x = c(10.5, 8.2, 11.3, 9.1, 13.0, 11.3, 8.2, 10.1)
expected <- c(5, 1.5, 6.5, 3, 8, 6.5, 1.5, 4)

rank(x)
# [1] 5.0 1.5 6.5 3.0 8.0 6.5 1.5 4.0

identical(expected, rank(x))
# [1] TRUE
x=c(10.5,8.2,11.3,9.1,13.0,11.3,8.2,10.1)

expectedR有一个内置的排名函数,名为
rank()
,它精确地给出了您想要的:

x = c(10.5, 8.2, 11.3, 9.1, 13.0, 11.3, 8.2, 10.1)
expected <- c(5, 1.5, 6.5, 3, 8, 6.5, 1.5, 4)

rank(x)
# [1] 5.0 1.5 6.5 3.0 8.0 6.5 1.5 4.0

identical(expected, rank(x))
# [1] TRUE
x=c(10.5,8.2,11.3,9.1,13.0,11.3,8.2,10.1)

expectedR有一个内置的排名函数,名为
rank()
,它精确地给出了您想要的:

x = c(10.5, 8.2, 11.3, 9.1, 13.0, 11.3, 8.2, 10.1)
expected <- c(5, 1.5, 6.5, 3, 8, 6.5, 1.5, 4)

rank(x)
# [1] 5.0 1.5 6.5 3.0 8.0 6.5 1.5 4.0

identical(expected, rank(x))
# [1] TRUE
x=c(10.5,8.2,11.3,9.1,13.0,11.3,8.2,10.1)

expectedR有一个内置的排名函数,名为
rank()
,它精确地给出了您想要的:

x = c(10.5, 8.2, 11.3, 9.1, 13.0, 11.3, 8.2, 10.1)
expected <- c(5, 1.5, 6.5, 3, 8, 6.5, 1.5, 4)

rank(x)
# [1] 5.0 1.5 6.5 3.0 8.0 6.5 1.5 4.0

identical(expected, rank(x))
# [1] TRUE
x=c(10.5,8.2,11.3,9.1,13.0,11.3,8.2,10.1)


预期请发布样本数据和预期结果。另外,用文字描述这个函数应该做什么。@Andrie我已经发布了一个例子,谢谢。你应该在发布之前搜索SO;此搜索策略提供了4个点击率,第一个Q回答了您的Q:
排名顺序平局[r]
下次感谢时一定会这样做请发布示例数据和预期结果。另外,用文字描述这个函数应该做什么。@Andrie我已经发布了一个例子,谢谢。你应该在发布之前搜索SO;此搜索策略提供了4个点击率,第一个Q回答了您的Q:
排名顺序平局[r]
下次感谢时一定会这样做请发布示例数据和预期结果。另外,用文字描述这个函数应该做什么。@Andrie我已经发布了一个例子,谢谢。你应该在发布之前搜索SO;此搜索策略提供了4个点击率,第一个Q回答了您的Q:
排名顺序平局[r]
下次感谢时一定会这样做请发布示例数据和预期结果。另外,用文字描述这个函数应该做什么。@Andrie我已经发布了一个例子,谢谢。你应该在发布之前搜索SO;此搜索策略提供了4个点击率,第一个Q回答了您的Q:
排名顺序平局[r]
下次谢谢您一定会这样做。我可以看看函数定义吗?可以。在控制台中键入
rank
。您可以通过这种方式查看任何函数的代码。Andrie谢谢。我可以看看函数定义吗?可以。在控制台中键入
rank
。您可以通过这种方式查看任何函数的代码。Andrie谢谢。我可以看看函数定义吗?可以。在控制台中键入
rank
。您可以通过这种方式查看任何函数的代码。Andrie谢谢。我可以看看函数定义吗?可以。在控制台中键入
rank
。您可以通过这种方式查看任何函数的代码。