r - 如何在 R 中手动构建订单函数?
问题描述
我正在尝试在 R 中构建自己的排序函数,它可以排序长度为 2 的向量。
这是我被要求完成的问题...编写一个函数,该函数接受一个x
长度为 2 的参数,并返回 的有序值x
。也就是说,如果x_2<x_1
,你的函数应该返回c(x_2,x_1)
,否则它应该返回x
。(编写你自己的函数。不要使用内置的函数顺序)这是我试图使用的代码
x = (c(3,1))
orders = function(x){
for(i in 1:length(x))
if(x[i+1] < x[i]){
print(c(x[i+1], x[i]))} else{
(return(x))
}}
orders(x)
但它给了我这个错误的输出
[1] 1 3
Error in if (x[i + 1] < x[i]) { : missing value where TRUE/FALSE needed
这是正确的答案,但我不确定如何修复错误,有什么建议吗?
解决方案
既然你说x
只有长度二,为什么不这样:
my_order <- function(x) {
if (x[1] < x[2]) {
return(x)
} else {
return(rev(x))
}
}
如果第一个元素小于第二个元素,则返回原始向量;否则,用 颠倒顺序rev()
。
自己尝试一下:
x1 <- c(3,1)
x2 <- c(2,3)
x3 <- c(101, -1)
my_order(x1)
my_order(x2)
my_order(x3)
推荐阅读
- javascript - 如何使用 AJAX 和 Flask 将诸如变量之类的信息从 javascript 传输到 python
- sql - 查询平均 CTE 计算帮助 - SQL
- spring-boot - 如何根据 HttpOutBoundGateway 的失败 HttpStatus (401,400) 重试消息
- c# - 有没有办法在 C# 中增加注册表中单个 Windows 服务的超时值?
- gitlab - Gitlab:运行管道时制作所需的变量
- firebase - 为什么“开始升级”没有出现在 Firebase 控制台的仪表板上?
- sql-server - SQL Server:分布式锁如何检查
- python - 正确实施 pandas concat
- php - 如何从数组中制作面包屑?
- html - 如何避免“很多 {%include%} 给出很多