gpt4 book ai didi

r - 使用 bash 转换数字序列

转载 作者:行者123 更新时间:2023-11-29 09:35:11 27 4
gpt4 key购买 nike

这是我的升序数字向量(称为 t8_ )

2 7 8 9 11 15 34 91 91 92 94

问题是有些数字出现了两次——我不想删除它们,但它们必须变成两个唯一的数字,而不是 float 。所以我想到了首先遍历向量

下一个向量是

2 7 8 9 11 15 34 91 92 92 94

然后又是同样的过程

什么时候向量会是

2 7 8 9 11 15 34 91 92 93 94

对于这个有效的例子

#!/bin/bash

while read -a vec; do
# INT_MIN for bash: 32-bit bash also supports 64-bit integers.
min=$((-1<<63))
for ((i = 0; i < ${#vec[@]}; i++)); do
(( min = vec[i] = vec[i] > min ? vec[i] : min + 1 ))
done
echo "${vec[@]}"
done
###

问题是它不适用于我看起来像那样的真实矢量 https://www.dropbox.com/s/vp67eiw4ns9rr07/num?dl=0 .

当我做 un.sh < vec在此特定实例中,我只是没有得到任何输出。谁能告诉我为什么?

最佳答案

我不能说为什么你的 shell 代码不适合你,但我可以为你提供一个可以很好地处理你的数据的 Perl 解决方案

use strict;
use warnings;
use 5.010;
use autodie;

my @numbers = split ' ', do {
open my $fh, '<', 'num';
local $/;
<$fh>;
};

for my $i ( 1 .. $#numbers ) {
++$numbers[$i] if $numbers[$i] == $numbers[$i-1];
}

say "@numbers";

关于r - 使用 bash 转换数字序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31233685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com