gpt4 book ai didi

r - 在 R 中创建矩阵的更快方法

转载 作者:行者123 更新时间:2023-12-02 05:27:53 25 4
gpt4 key购买 nike

我有以下我一直在做的事情的例子,这在形式上很简单,但我想检查一下我的代码有哪些潜在的替代方案——如果可能的话,为了更快。这是示例:

Time1=Sys.time()
v=rep(c("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P"),
each=1000)
m=matrix(0,ncol=length(v),nrow=length(v))
for (j in 1:length(v)) {
for(i in 1:length(v)) {
if (v[j]==v[i]) {
m[j,i]=1
} else {
next
}
}
}
Time2=Sys.time()
Time2-Time1
# Time difference of 1.405404 mins

我正在创建一个简单的关系矩阵——其中向量 v1可以解释为被放置为线和列以及结果相等的矩阵图。如果它们相等,我们得到 m[j,i]=1 ;如果不相等, m[j,i]=0 .正如我所说,我想让这段代码运行得更快。我试图想办法将其编码为 apply功能,但我暂时还没有弄清楚。不过,我想知道除了我所说的之外是否还有其他选择。

编辑 : 我对文字做了一些更正,我试图澄清这个问题。

最佳答案

当然。假设您的样本数据不代表真实数据,那么这会快 6 倍:

m2 <- +(outer(v, v, `==`))
all.equal(m, m2)
# [1] TRUE

但是,如果您的真实数据有大量重复,那么@Sathish 在比较之前删除重复并通过矩阵传播的方法可能要快得多。

关于r - 在 R 中创建矩阵的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61089532/

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