tidyr::crossing功能
时间: 2024-04-10 14:33:34 浏览: 133
`tidyr::crossing` 是一个函数,用于生成两个或多个变量的所有可能组合。它接受两种不同的输入形式:向量或列表。
当传递向量时,每个向量代表一个变量,函数将生成一个数据框,其中每一行都是所有变量的一个组合。例如,如果传递两个向量 `x` 和 `y`,其中 `x` 包含三个元素(a、b、c),`y` 包含两个元素(1、2),那么 `crossing(x, y)` 会生成一个包含六行的数据框,其中包含所有可能的组合:
```
x y
1 a 1
2 a 2
3 b 1
4 b 2
5 c 1
6 c 2
```
当传递列表时,列表的每个元素都代表一个变量,并且可以为每个变量指定要使用的值。例如,如果传递一个列表 `list(x = c("a", "b"), y = c(1, 2))`,`crossing` 函数将生成与前面相同的结果。
`tidyr::crossing` 在数据处理中很有用,特别是在生成所有可能组合的情况下。在上述代码中,它用于生成 `id` 和 `target` 的所有组合,以便进一步处理和筛选数据。
相关问题
解释这段代码pb <- progress_bar$new(total = length(cancer_types)) for (i in cancer_types){ for (j in classes){ mi<-read.csv(str_c(dir,"\\tcga_data\\",i,"\\",j,"_normalized_mi.csv"),row.names = 1,check.names = F) rna<-read.csv(str_c(dir,"\\tcga_data\\",i,"\\",j,"_normalized_rna.csv"),row.names = 1, check.names = F) id<-rownames(mi) target<-rownames(rna) pair<-tidyr::crossing(id, target) pair<-cal_correlation(pair,mi,rna,pcc_filter) mi<-mi[rownames(mi)%in%unique(pair[,1]),] fwrite(mi,str_c(dir,"\\tcga_data\\",i,"\\",j,"_corr_validated_mi.csv"),sep = ',',row.names = T,quote = F) rna<-rna[rownames(rna)%in%unique(pair[,2]),] fwrite(rna,str_c(dir,"\\tcga_data\\",i,"\\",j,"_corr_validated_rna.csv"),sep = ',',row.names = T,quote = F) write.csv(pair,str_c(dir,"\\tcga_data\\",i,"\\",j,"_miRNA-RNA_pair.csv"),row.names=F,quote=F) } pb$tick() }
这段代码是一个嵌套循环,用于处理多个癌症类型和类别的数据。
首先,通过 `progress_bar$new(total = length(cancer_types))` 创建一个进度条对象 `pb`,总共需要处理的次数等于 `cancer_types` 的长度。
然后,使用两个嵌套的 `for` 循环遍历 `cancer_types` 和 `classes`。在每次循环中,执行以下步骤:
1. 使用 `read.csv` 函数读取指定路径下的文件,文件路径由变量 `dir`、`i` 和 `j` 构成。
2. 将读取的数据分别赋值给变量 `mi` 和 `rna`。
3. 获取 `mi` 和 `rna` 数据的行名称,并将其分别赋值给变量 `id` 和 `target`。
4. 使用 `tidyr::crossing` 函数获取 `id` 和 `target` 的所有组合,并赋值给变量 `pair`。
5. 调用自定义函数 `cal_correlation` 处理 `pair`、`mi`、`rna` 和 `pcc_filter`,得到筛选后的结果,并重新赋值给变量 `pair`。
6. 根据筛选后的结果,从 `mi` 中保留与 `pair[,1]` 中唯一值匹配的行,并将结果写入指定路径下的文件。
7. 根据筛选后的结果,从 `rna` 中保留与 `pair[,2]` 中唯一值匹配的行,并将结果写入指定路径下的文件。
8. 将 `pair` 写入指定路径下的文件,文件名为 `"_miRNA-RNA_pair.csv"`。
每执行完一次内层循环,调用 `pb$tick()` 方法更新进度条的状态。
整个代码的目的是读取文件、处理数据、筛选结果,并将处理后的数据和结果写入指定的文件中。
short time analysis:energy and zero crossing rate voiced
短时能量和过零率(声音)分析是一种常用的语音信号处理方法,主要用于语音识别、音频编解码等应用中。
短时能量是指语音信号在一小段时间内的能量大小。在语音中,不同的音素的能量大小是有差异的,通常元音的能量比较高,而辅音的能量较低。短时能量分析可以用于检测语音段的边界,例如对话的开始和结束位置等。
过零率是指语音信号在一小段时间内穿过零点的次数。由于人的声带振动产生的声音波形通常是周期性的,在辅音中有更多的过零点,而在元音中较少。过零率分析可以用于检测语音信号中的辅音和元音之间的边界,如音节边界。
有声音是指发音时声带振动产生的音,无声音则是在发音时声带不振动产生的音。过零率与有声音相关,因为有声音的声波波形经常穿过零点,而无声音的声波波形则较少或没有穿过零点。因此,过零率分析可以用于检测语音信号中的有声音和无声音之间的边界。
综上所述,短时能量和过零率(声音)分析是一种有效的语音信号处理方法,用于分析语音信号的能量、边界位置以及有声音和无声音的转变。它在语音识别、音频编解码等领域具有广泛的应用前景。
阅读全文