gpt4 book ai didi

r - 需要计算 R 中向量中特定转换的数量

转载 作者:行者123 更新时间:2023-12-01 09:28:36 25 4
gpt4 key购买 nike

我正在用 R 编写一个采样器,它基本上是一个很大的 for 循环,对于每个迭代,我必须计算向量中的转换次数。我有一个名为 k 的向量,其中包含 0 和 1,向量中有 1000 个条目。

我使用了以下非常慢的代码:

#we determine the number of transitions n00,n01,n10,n11
n00=n01=n10=n11=0 #reset number of transitions between states from last time
for(j in 1:(1000-1)){
if(k[j+1]==1 && k[j]==0) {n01<-n01+1}
else { if(k[j+1]==1 && k[j]==1) {n11<-n11+1}
else { if(k[j+1]==0 && k[j]==1) {n10<-n10+1}
else{n00<-n00+1}
}

}
}

因此,每次循环进行时,变量 n00,n01,n10,n11 都会计算向量中的转换。例如,n00 计算 0 后跟另一个 0 的次数。依此类推...

这很慢,而且我对 R 很陌生,所以我在这里有点绝望。如果可能的话,我不明白如何使用 grep。

感谢您的帮助

最佳答案

尝试这样的事情:

x <- sample(0:1,20,replace = TRUE)
> table(paste0(head(x,-1),tail(x,-1)))

00 01 10 11
4 3 4 8
headtail返回向量的部分 x : 除了最后一个元素之外的所有元素,然后是除了第一个元素之外的所有元素。这意味着相应的元素是来自 x 的连续对.

然后 paste0只需将每个元素转换为字符向量并粘贴第一个元素、第二个元素等。结果是一个包含“00”、“01”等元素的字符向量。然后 table只是计算每个有多少。

您可以将结果分配给一个新变量,如下所示:
T <- table(paste0(head(x,-1),tail(x,-1)))

对每一段代码进行实验,看看它是如何工作的。只需运行 head(x,-1)等,以查看每件作品的作用。

要解决下面的评论,请确保在运行 table 时所有类型都带有计数。 ,首先将其转换为因子:
x1 <- factor(paste0(head(x,-1),tail(x,-1)),levels = c('00','01','10','11'))
table(x1)

关于r - 需要计算 R 中向量中特定转换的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19033368/

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