gpt4 book ai didi

r - 计算R中数字字符串的变异性指数

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

我在一个向量中有数千个数字串,每个数字代表语音单元中的音调实现(下降、上升、下降-上升等)。举例说明:

Tones <- c("2222", "1411", "112", "815", "21111522")

我想为每个字符串获取一个可变性索引,通过

  1. 将字符串中的每个数字与紧邻的下一个数字进行比较,
  2. 如果下一个数字与前一个数字不同,则存储“1”数量,
  3. 如果下一个数字等于前一个数字,则存储“0”,
  4. 将这些存储的值相加
  5. 将它们除以数字对的总数。

例如,对于“2222”,可变性索引将为 0,因为字符串中的第一个数字等于第二个数字,第二个数字等于第三个数字,第三个数字等于最后一个数字;因此变异性指数将为(0+0+0)/3=0。对于字符串“1411”,索引将为 (1+1+0)/3=0.6666667,因为“1”与“4”不同,“4”与“1”不同,并且“1”等于“1”。

我想必须从分割字符串开始:

TonesSplit <- strsplit(Tones, split="")

它给出一个列表,然后使用for循环和if子句来寻址列表切片中的单元格。只是我不知道该怎么做。我将非常感谢有关如何编程的建议。

最佳答案

一个基本单行R解决方案:

vapply(Tones,function(x) length(rle(charToRaw(x))$lengths)-1,1)/(nchar(Tones)-1)
# 2222 1411 112 815 21111522
#0.0000000 0.6666667 0.5000000 1.0000000 0.4285714

一些解释:

  • 使用 charToRaw 我得到每个字符串的原始字节内容;
  • 使用rle我得到重复字符序列的数量。变化只是序列数减一;
  • 使用 vapply 我将函数应用于每个字符串;
  • 使用 nchar 我得到每个字符串的字符数。

关于r - 计算R中数字字符串的变异性指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50793860/

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