gpt4 book ai didi

r - 将每个元素与对象的每个其他元素组合(叉积)

转载 作者:行者123 更新时间:2023-12-05 00:34:20 25 4
gpt4 key购买 nike

我有两个整数向量,比如 v1=c(1,2)v2=c(3,4) ,我想组合并获得它作为结果(作为 data.frame 或矩阵):

> combine(v1,v2) <--- doesn't exist
1 3
1 4
2 3
2 4

这是一个基本情况。稍微复杂一点怎么样 - 将每一行与其他每一行结合起来?例如。假设我们有两个 data.frames 或矩阵 d1 和 d2,我们想将它们组合起来得到以下结果:
d1
1 13
2 11

d2
3 12
4 10

> combine(d1,d2) <--- doesn't exist
1 13 3 12
1 13 4 10
2 11 3 12
2 11 4 10

我怎么能做到这一点?

最佳答案

对于向量的简单情况,有 expand.grid

v1 <- 1:2
v2 <- 3:4
expand.grid(v1, v2)
# Var1 Var2
#1 1 3
#2 2 3
#3 1 4
#4 2 4

我不知道有什么功能可以自动为数据框做你想做的事情(见编辑)

我们可以使用 expand.grid 和 cbind 相对轻松地完成此操作。
df1 <- data.frame(a = 1:2, b=3:4)
df2 <- data.frame(cat = 5:6, dog = c("a","b"))

expand.grid(df1, df2) # doesn't work so let's try something else
id <- expand.grid(seq(nrow(df1)), seq(nrow(df2)))
out <-cbind(df1[id[,1],], df2[id[,2],])
out
# a b cat dog
#1 1 3 5 a
#2 2 4 5 a
#1.1 1 3 6 b
#2.1 2 4 6 b

编辑:正如 Joran 在评论中指出的那样 merge为我们为数据框做这件事。
df1 <- data.frame(a = 1:2, b=3:4)
df2 <- data.frame(cat = 5:6, dog = c("a","b"))
merge(df1, df2)
# a b cat dog
#1 1 3 5 a
#2 2 4 5 a
#3 1 3 6 b
#4 2 4 6 b

关于r - 将每个元素与对象的每个其他元素组合(叉积),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10864433/

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