r - 创建我自己的排序函数时发生错误参数的长度为零
问题描述
*> csort <- function(c){
i<-1
for (i in 1:length(c)-1) {
j <- i+1
for (j in 2:length(c)) {
if(c[i] >= c[j])c[c(i,j)] <- c[c(j,i)]
j = j + 1
}
i = i + 1
}
}
> csort(a)
Error in if (c[i] >= c[j]) c[c(i, j)] <- c[c(j, i)] :
argument is of length zero*
这就是我运行 RStudio 时所做的。我不知道是什么原因导致这里的零。
解决方案
你的错误在这一行
for (i in 1:length(c)-1)
并且应该是
for (i in 1:(length(c)-1))
因为 $:$ 运算符在 $-$ 之前。
一个例子是
1:(5-1)
#[1] 1 2 3 4
1:5-1
#[1] 0 1 2 3 4
所以错误发生在零值的索引中。
csort <- function(d){
for (i in 1:(length(d)-1)) {
for (j in (i+1):length(d)) {
if(d[i] >= d[j])d[c(i,j)] <- d[c(j,i)]
}
}
return(d)
}
d<-c(5:1,-1:3,-9,-3,10,9,-20,1,20,-6,5)
any((csort(d)==sort(d))==F)
#[1] FALSE
您可以改进此功能。
推荐阅读
- android - 构建失败:程序类型已经存在
- c++ - 将列表插入向量末尾
- hadoop - Hadoop - 映射器输出是否可以超过块大小
- python - Pandas:应用带有列和变量作为参数的函数
- html - 你可以使用 flexbox 的 wrap-reverse 来反转网格中的一系列 div,但仍然有一个完整的顶行吗?
- python - Geany:构建执行python忽略设置
- c# - 尝试在不使用 Matlab/Numpy/等的情况下对 2 个图像执行 2D 互相关
- javascript - 逐字符消失的占位符
- authentication - 在前端实现用户登录
- c++ - 如何使用半空间测试确定一个点是在线段的前面还是后面?