如何使用NULL填充可变长度的向量以达到固定长度?

huangapple go评论115阅读模式
英文:

How to pad variable-length vectors with NULLs to a fixed length?

问题

我有一组可变长度的整数向量,我想通过在末尾插入NULL值来使它们具有相同的固定长度。我如何实现这个目标?例如,我有一个包含可变长度向量的元组 "a",包括 [1..3][1..5][1..6]。我如何将它们转换为长度为6的向量?

  1. col1 col2 col3
  2. 1 1 1
  3. 2 2 2
  4. 3 3 3
  5. null 4 4
  6. null 5 5
  7. null null 6
英文:

I have a set of variable-length integer vectors and I want to align them by inserting NULL values at the end to make them have the same fiexed length. How can I achieve this? For example, I have a tuple “a“ containing variable-length vectors [1..3], [1..5], and [1..6]. How can I transform them into vectors of length 6?

  1. col1 col2 col3
  2. 1 1 1
  3. 2 2 2
  4. 3 3 3
  5. null 4 4
  6. null 5 5
  7. null null 6

答案1

得分: 1

方法1: 使用 append!

  1. a = [1..3, 1..5, 1..6]
  2. def f(mutable x, N):
  3. x.copy().append!(array(DOUBLE, N - size(x), N - size(x), NULL))
  4. each(f{, 6}, a)

输出:

  1. col1 col2 col3
  2. 1 1 1
  3. 2 2 2
  4. 3 3 3
  5. 4 4
  6. 5 5
  7. 6

方法2: 向每个向量添加 6 个 NULL 值,以确保它们的长度大于或等于 6。然后提取每个向量的前六个元素:

  1. a = [1..3, 1..5, 1..6]
  2. def fillNull(x, n):
  3. take(x < -take(00i, n), n)
  4. each(fillNull{, 6}, a)
英文:

Method 1: Use append!:

  1. a=[1..3,1..5,1..6]
  2. def f(mutable x, N): x.copy().append!(array(DOUBLE,N - size(x),N - size(x),NULL))
  3. each(f{,6},a)

Output:

  1. col1 col2 col3
  2. 1 1 1
  3. 2 2 2
  4. 3 3 3
  5. 4 4
  6. 5 5
  7. 6

Method 2: Add 6 NULL values to each of these vectors to ensure their length is greater than or equal to 6. Then extract the first six elements of each vector:

  1. a = [1..3, 1..5, 1..6]
  2. def fillNull(x,n): take(x&lt;-take(00i, n), n)
  3. each(fillNull{, 6}, a)

huangapple
  • 本文由 发表于 2023年7月11日 15:01:11
  • 转载请务必保留本文链接:https://go.coder-hub.com/76659408.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定