gpt4 book ai didi

r - 如何cbind或rbind不同长度的向量而不重复较短向量的元素?

转载 作者:行者123 更新时间:2023-12-03 06:10:03 25 4
gpt4 key购买 nike

cbind(1:2, 1:10)  
[,1] [,2]
[1,] 1 1
[2,] 2 2
[3,] 1 3
[4,] 2 4
[5,] 1 5
[6,] 2 6
[7,] 1 7
[8,] 2 8
[9,] 1 9
[10,] 2 10

我想要如下的输出

[,1] [,2]  
[1,] 1 1
[2,] 2 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
[7,] 7
[8,] 8
[9,] 9
[10,] 10

最佳答案

诀窍是使所有输入的长度相同。

x <- 1:2
y <- 1:10
n <- max(length(x), length(y))
length(x) <- n
length(y) <- n

如果您希望输出为数组,则 cbind 可以工作,但您会获得额外的 NA 值来填充矩形。

cbind(x, y)
x y
[1,] 1 1
[2,] 2 2
[3,] NA 3
[4,] NA 4
[5,] NA 5
[6,] NA 6
[7,] NA 7
[8,] NA 8
[9,] NA 9
[10,] NA 10

要去掉 NA,输出必须是一个列表。

Map(function(...) 
{
ans <- c(...)
ans[!is.na(ans)]
}, as.list(x), as.list(y)
)
[[1]]
[1] 1 1

[[2]]
[1] 2 2

[[3]]
[1] 3

[[4]]
[1] 4

[[5]]
[1] 5

[[6]]
[1] 6

[[7]]
[1] 7

[[8]]
[1] 8

[[9]]
[1] 9

[[10]]
[1] 10

编辑:我将 maply(..., SIMPLIFY = FALSE) 替换为 Map

关于r - 如何cbind或rbind不同长度的向量而不重复较短向量的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3699405/

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