Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中跨两个数据帧生成重复的数据迭代_R_For Loop - Fatal编程技术网

在R中跨两个数据帧生成重复的数据迭代

在R中跨两个数据帧生成重复的数据迭代,r,for-loop,R,For Loop,我试图用一个已经建立的语音测量矩阵来计算R中两组语音变量之间的距离。例如,我想对/p/和/b/进行测量,然后比较这两个语音单位之间的距离。我可以使用以下独特语音特征矩阵来实现这一点: library(tibble) distinctive.feature.matrix <- tribble(~Symbol, ~Sonorant, ~Consonantal, ~Voice, ~Nasal, ~Degree, ~Labial, ~Palatal, ~Pharyngeal, ~

我试图用一个已经建立的语音测量矩阵来计算R中两组语音变量之间的距离。例如,我想对/p/和/b/进行测量,然后比较这两个语音单位之间的距离。我可以使用以下独特语音特征矩阵来实现这一点:

 library(tibble)     
 distinctive.feature.matrix <- tribble(~Symbol, ~Sonorant, ~Consonantal, ~Voice, ~Nasal, 
 ~Degree, ~Labial, ~Palatal, ~Pharyngeal, ~Round, ~Tongue, ~Radical,
                                       "p", -1, 1, -1, -1, 1, 1, 0, -1, 1, 0, 0, 
                                       "b", -1, 1, 0, -1, 1, 1, 0, -1, 1, 0, 0, 
                                       "t", -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, 0,
                                       "d", -1, 1, 0, -1, 1, -1, 1, -1, -1, 1, 0,
                                       "k", -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, 0,
                                       "g", -1, 1, 0, -1, 1, -1, -1, -1, -1, -1, 0,
                                       "f", -0.5, 1, -1, -1, 0, -1, 1, -1, 1, 0, 0,
                                       "v", -0.5, 1, 0, -1, 0, -1, 1, -1, 1, 0, 0,
                                       "θ", -0.5, 1, -1, -1, 0, -1, 1, -1, -1, 0, 0,
                                       "ð", -0.5, 1, 0, -1, 0, -1, 1, -1, -1, 0, 0,
                                       "s", -0.5, 1, -1, -1, 0, -1, 1, -1, -1, 1, 0,
                                       "z", -0.5, 1, 0, -1, 0, -1, 1, -1, -1, 1, 0,
                                       "h", -0.5, 1, 0, -1, 0, -1, -1, 1, -1, -1, -1,
                                       "ʃ", -0.5, 1, -1, -1, 0, -1, 0, -1, -1, 0, 0,
                                       "ʒ", -0.5, 1, 0, -1, 0, -1, 0, -1, -1, 0, 0,
                                       "tʃ", -0.8, 1, -1, -1, 1, -1, 0, -1, -1, 0, 0,
                                       "dʒ", -0.8, 1, 0, -1, 1, -1, 0, -1, -1, 0, 0,
                                       "m", 0, 0, 1, 1, 1, 1, 0, -1, 1, 0, 0,
                                       "n", 0, 0, 1, 1, 1, -1, 1, -1, -1, 1, 0,
                                       "ŋ", 0, 0, 1, 1, 1, -1, -1, -1, -1, -1, 0,
                                       "r", 0.5, 0, 1, 0, -1, -1, -1, 1, 1, -1, -1,
                                       "l", 0.5, 0, 1, 0, -1, -1, 1, -1, -1, 1, 0,
                                       "w", 0.8, 0, 1, 0, 0, 1, -1, -1, 1, -1, 0,
                                       "j", 0.8, 0, 1, 0, 0, -1, 0, -1, -1, 0, 1) 
库(TIBLE)

differential.feature.matrixdplyr软件包提供了有帮助的连接函数

对于production.data的每一行,您可以为每个C1_目标、C1_实际引入相应的功能,以创建一个大型TIBLE:

library(dplyr)
x <- production.data %>% 
     inner_join(distinctive.feature.matrix, by = c("C1_target"="Symbol")) %>%
     inner_join(distinctive.feature.matrix, by = c("C1_actual"="Symbol"))
库(dplyr)
x%
内部连接(differential.feature.matrix,by=c(“C1_目标”=“符号”))%>%
内部连接(differential.feature.matrix,by=c(“C1_实际值”=“符号”))
请注意,有两个调用internal_join:一个用于获取与C1_目标对应的特性,第二个用于C1_实际的特性

新的tibble具有诸如Sonorant.x和Sonorant.y之类的列名,第一个对应于C1_目标,第二个对应于C1_实际

可以通过采用列名(不包括符号)创建要素名称列表:

features <- colnames(distinctive.feature.matrix)[-1]
功能谢谢!这里的一个问题(我在Q中没有指定)是,我还需要保留
C1\u目标
C1\u实际
列。在这一点上,数据看起来有点奇怪(当我使用完整的数据集时,有太多的0),但我不能说出问题出在哪里,因为我看不到哪一行是哪一行。但是谢谢你,这绝对是成功的!
features <- colnames(distinctive.feature.matrix)[-1]
diffs <- do.call(cbind, sapply(features, function(f) x[paste0(f, '.x')] - x[paste0(f, '.y')]))
colnames(diffs) <- features