在R中查看两列是独立的还是依赖于data.frame?

时间:2017-09-20 21:30:09

标签: r dataframe statistics

我希望验证data.frame中的两列是独立的还是依赖的。我很确定我有一个working函数,但不确定它是否被视为"R-thonic"这样做。

示例函数检查列依赖性

#Identify which variables are independent of one another and dependent on each other
for (var1 in names(bmt)) {
  for (var2 in names(bmt)) {
    if (var1 != var2) {
      if (cor.test(bmt[[var1]], bmt[[var2]], method="spearman")$p.value <= 0.05) {
        cat(var1, " and ", var2, " are dependent.\n")
      } else {
        cat(var1, " and ", var2, " are independent.\n")
      }
    }
  }
}

数据集

> bmt
    group   t1   t2 d1 d2 d3   ta da   tc dc   tp dp z1 z2 z3 z4 z5 z6   z7 z8 z9 z10
1       1 2081 2081  0  0  0   67  1  121  1   13  1 26 33  1  0  1  1   98  0  1   0
2       1 1602 1602  0  0  0 1602  0  139  1   18  1 21 37  1  1  0  0 1720  0  1   0
3       1 1496 1496  0  0  0 1496  0  307  1   12  1 26 35  1  1  1  0  127  0  1   0
4       1 1462 1462  0  0  0   70  1   95  1   13  1 17 21  0  1  0  0  168  0  1   0

有没有更好的方法可以使用像sapply

这样的方法解决这个问题

以下是使用dput加载到R:

的数据输出
> dput(bmt)
structure(list(group = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L
), t1 = c(2081L, 1602L, 1496L, 1462L, 1433L, 1377L, 1330L, 996L, 
226L, 1199L, 1111L, 530L, 1182L, 1167L, 418L, 417L, 276L, 156L, 
781L, 172L, 487L, 716L, 194L, 371L, 526L, 122L, 1279L, 110L, 
243L, 86L, 466L, 262L, 162L, 262L, 1L, 107L, 269L, 350L, 2569L, 
2506L, 2409L, 2218L, 1857L, 1829L, 1562L, 1470L, 1363L, 1030L, 
860L, 1258L, 2246L, 1870L, 1799L, 1709L, 1674L, 1568L, 1527L, 
1324L, 957L, 932L, 847L, 848L, 1850L, 1843L, 1535L, 1447L, 1384L, 
414L, 2204L, 1063L, 481L, 105L, 641L, 390L, 288L, 522L, 79L, 
1156L, 583L, 48L, 431L, 1074L, 393L, 10L, 53L, 80L, 35L, 1499L, 
704L, 653L, 222L, 1356L, 2640L, 2430L, 2252L, 2140L, 2133L, 1238L, 
1631L, 2024L, 1345L, 1136L, 845L, 491L, 162L, 1298L, 121L, 2L, 
62L, 265L, 547L, 341L, 318L, 195L, 469L, 93L, 515L, 183L, 105L, 
128L, 164L, 129L, 122L, 80L, 677L, 73L, 168L, 74L, 16L, 248L, 
732L, 105L, 392L, 63L, 97L, 153L, 363L), t2 = c(2081L, 1602L, 
1496L, 1462L, 1433L, 1377L, 1330L, 996L, 226L, 1199L, 1111L, 
530L, 1182L, 1167L, 418L, 383L, 276L, 104L, 609L, 172L, 487L, 
662L, 194L, 230L, 526L, 122L, 129L, 74L, 122L, 86L, 466L, 192L, 
109L, 55L, 1L, 107L, 110L, 332L, 2569L, 2506L, 2409L, 2218L, 
1857L, 1829L, 1562L, 1470L, 1363L, 1030L, 860L, 1258L, 2246L, 
1870L, 1799L, 1709L, 1674L, 1568L, 1527L, 1324L, 957L, 932L, 
847L, 848L, 1850L, 1843L, 1535L, 1447L, 1384L, 414L, 2204L, 1063L, 
481L, 105L, 641L, 390L, 288L, 421L, 79L, 748L, 486L, 48L, 272L, 
1074L, 381L, 10L, 53L, 80L, 35L, 248L, 704L, 211L, 219L, 606L, 
2640L, 2430L, 2252L, 2140L, 2133L, 1238L, 1631L, 2024L, 1345L, 
1136L, 845L, 422L, 162L, 84L, 100L, 2L, 47L, 242L, 456L, 268L, 
318L, 32L, 467L, 47L, 390L, 183L, 105L, 115L, 164L, 93L, 120L, 
80L, 677L, 64L, 168L, 74L, 16L, 157L, 625L, 48L, 273L, 63L, 76L, 
113L, 363L), d1 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), d2 = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
1L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 
0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 
1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 
1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L), d3 = c(0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), ta = c(67L, 1602L, 1496L, 70L, 1433L, 1377L, 1330L, 
72L, 226L, 1199L, 1111L, 38L, 1182L, 39L, 418L, 417L, 276L, 28L, 
781L, 22L, 487L, 716L, 194L, 371L, 526L, 88L, 1279L, 110L, 243L, 
86L, 466L, 10L, 162L, 262L, 1L, 107L, 269L, 350L, 2569L, 2506L, 
2409L, 2218L, 1857L, 1829L, 1562L, 1470L, 1363L, 1030L, 860L, 
1258L, 52L, 1870L, 1799L, 20L, 1674L, 1568L, 1527L, 25L, 957L, 
29L, 847L, 848L, 1850L, 1843L, 1535L, 1447L, 1384L, 414L, 2204L, 
1063L, 30L, 21L, 641L, 390L, 18L, 25L, 16L, 1156L, 583L, 48L, 
431L, 1074L, 393L, 10L, 53L, 10L, 35L, 1499L, 36L, 653L, 222L, 
1356L, 2640L, 2430L, 2252L, 2140L, 2133L, 1238L, 1631L, 2024L, 
32L, 1136L, 845L, 491L, 162L, 1298L, 28L, 2L, 62L, 265L, 547L, 
21L, 318L, 195L, 469L, 93L, 515L, 183L, 105L, 128L, 164L, 129L, 
122L, 21L, 677L, 73L, 168L, 29L, 16L, 248L, 732L, 105L, 392L, 
38L, 97L, 153L, 363L), da = c(1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 
0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 
0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
0L), tc = c(121L, 139L, 307L, 95L, 236L, 123L, 96L, 121L, 226L, 
91L, 1111L, 84L, 112L, 487L, 220L, 417L, 81L, 156L, 781L, 172L, 
76L, 716L, 94L, 184L, 121L, 122L, 1279L, 110L, 243L, 86L, 119L, 
84L, 162L, 262L, 1L, 107L, 120L, 350L, 2569L, 2506L, 2409L, 2218L, 
260L, 1829L, 1562L, 180L, 200L, 210L, 860L, 120L, 380L, 230L, 
140L, 348L, 1674L, 1568L, 1527L, 1324L, 957L, 932L, 847L, 155L, 
1850L, 1843L, 1535L, 220L, 200L, 414L, 2204L, 240L, 120L, 105L, 
641L, 390L, 100L, 140L, 79L, 180L, 583L, 48L, 431L, 120L, 100L, 
10L, 53L, 80L, 35L, 1499L, 155L, 653L, 123L, 1356L, 2640L, 2430L, 
150L, 220L, 250L, 250L, 150L, 180L, 360L, 140L, 845L, 180L, 162L, 
1298L, 121L, 2L, 62L, 210L, 130L, 100L, 140L, 195L, 90L, 93L, 
515L, 130L, 105L, 128L, 164L, 129L, 122L, 80L, 150L, 73L, 200L, 
74L, 16L, 100L, 732L, 105L, 122L, 63L, 97L, 153L, 363L), dc = c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 
0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 
1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 
1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 
1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L), tp = c(13L, 18L, 12L, 13L, 12L, 
12L, 17L, 12L, 10L, 29L, 22L, 34L, 22L, 1167L, 21L, 16L, 21L, 
20L, 26L, 37L, 22L, 17L, 25L, 9L, 11L, 13L, 22L, 49L, 23L, 86L, 
100L, 59L, 40L, 24L, 1L, 107L, 27L, 33L, 21L, 17L, 16L, 11L, 
15L, 19L, 18L, 14L, 12L, 14L, 15L, 66L, 15L, 16L, 12L, 19L, 24L, 
14L, 13L, 15L, 69L, 7L, 16L, 16L, 9L, 19L, 21L, 24L, 19L, 27L, 
12L, 16L, 24L, 15L, 11L, 11L, 288L, 20L, 79L, 18L, 11L, 14L, 
12L, 19L, 16L, 10L, 53L, 80L, 35L, 9L, 18L, 23L, 52L, 14L, 22L, 
14L, 17L, 18L, 17L, 18L, 40L, 16L, 14L, 15L, 20L, 491L, 13L, 
1298L, 65L, 2L, 11L, 14L, 24L, 17L, 12L, 16L, 20L, 28L, 31L, 
21L, 105L, 12L, 164L, 51L, 12L, 0L, 8L, 38L, 48L, 24L, 16L, 52L, 
18L, 30L, 24L, 16L, 97L, 59L, 19L), dp = c(1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
1L, 0L, 1L, 1L), z1 = c(26L, 21L, 26L, 17L, 32L, 22L, 20L, 22L, 
18L, 24L, 19L, 17L, 24L, 27L, 18L, 15L, 18L, 20L, 27L, 40L, 22L, 
28L, 26L, 39L, 15L, 20L, 17L, 28L, 37L, 17L, 15L, 29L, 36L, 23L, 
42L, 30L, 29L, 22L, 19L, 31L, 35L, 16L, 29L, 19L, 26L, 27L, 13L, 
25L, 25L, 30L, 45L, 33L, 32L, 23L, 37L, 15L, 22L, 46L, 18L, 27L, 
28L, 23L, 37L, 34L, 35L, 33L, 21L, 21L, 25L, 50L, 35L, 37L, 26L, 
50L, 45L, 28L, 43L, 14L, 17L, 32L, 30L, 30L, 33L, 34L, 33L, 30L, 
23L, 35L, 29L, 23L, 28L, 33L, 18L, 29L, 35L, 27L, 36L, 24L, 27L, 
35L, 50L, 47L, 40L, 22L, 22L, 8L, 39L, 20L, 27L, 32L, 31L, 20L, 
35L, 36L, 35L, 7L, 23L, 11L, 14L, 37L, 19L, 37L, 25L, 35L, 15L, 
45L, 32L, 41L, 27L, 33L, 39L, 17L, 43L, 44L, 48L, 31L, 52L), 
    z2 = c(33L, 37L, 35L, 21L, 36L, 31L, 17L, 24L, 21L, 40L, 
    28L, 28L, 23L, 22L, 14L, 20L, 5L, 33L, 27L, 37L, 20L, 32L, 
    32L, 31L, 20L, 26L, 20L, 25L, 38L, 26L, 18L, 32L, 43L, 16L, 
    48L, 19L, 20L, 20L, 13L, 34L, 31L, 16L, 35L, 18L, 30L, 34L, 
    24L, 29L, 31L, 16L, 39L, 30L, 23L, 28L, 34L, 19L, 12L, 31L, 
    17L, 30L, 29L, 26L, 36L, 32L, 32L, 28L, 18L, 15L, 19L, 38L, 
    36L, 34L, 24L, 48L, 43L, 30L, 43L, 19L, 14L, 33L, 23L, 32L, 
    28L, 54L, 41L, 35L, 25L, 18L, 21L, 16L, 30L, 22L, 23L, 26L, 
    31L, 17L, 39L, 28L, 21L, 41L, 36L, 27L, 39L, 21L, 23L, 2L, 
    48L, 19L, 25L, 32L, 28L, 23L, 40L, 39L, 33L, 2L, 25L, 7L, 
    18L, 35L, 32L, 34L, 29L, 28L, 14L, 42L, 43L, 29L, 36L, 39L, 
    43L, 14L, 50L, 37L, 56L, 25L, 48L), z3 = c(1L, 1L, 1L, 0L, 
    1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 
    0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 
    1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 
    0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 
    0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 
    0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 
    1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 
    1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L), z4 = c(0L, 
    1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
    0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
    1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 
    1L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
    0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 
    1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
    1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 
    1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L), z5 = c(1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
    0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 
    1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 
    1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 
    0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 
    0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 
    1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 
    0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
    1L, 0L, 1L, 1L, 1L), z6 = c(1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
    0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 
    1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 
    0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 
    0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 
    1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 
    0L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 
    0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 
    0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L), z7 = c(98L, 1720L, 127L, 
    168L, 93L, 2187L, 1006L, 1319L, 208L, 174L, 236L, 151L, 203L, 
    191L, 110L, 824L, 146L, 85L, 187L, 129L, 128L, 84L, 329L, 
    147L, 943L, 2616L, 937L, 303L, 170L, 239L, 508L, 74L, 393L, 
    331L, 196L, 178L, 361L, 834L, 270L, 60L, 120L, 60L, 90L, 
    210L, 90L, 240L, 90L, 210L, 180L, 180L, 105L, 225L, 120L, 
    90L, 60L, 90L, 450L, 75L, 90L, 60L, 75L, 180L, 180L, 270L, 
    180L, 150L, 120L, 120L, 60L, 270L, 90L, 120L, 90L, 120L, 
    90L, 90L, 90L, 60L, 120L, 150L, 120L, 150L, 120L, 240L, 180L, 
    150L, 150L, 30L, 105L, 90L, 120L, 210L, 750L, 24L, 120L, 
    210L, 240L, 240L, 690L, 105L, 120L, 900L, 210L, 210L, 300L, 
    105L, 210L, 75L, 90L, 180L, 630L, 180L, 300L, 90L, 120L, 
    135L, 210L, 120L, 150L, 270L, 285L, 240L, 510L, 780L, 150L, 
    180L, 150L, 750L, 180L, 180L, 150L, 210L, 240L, 360L, 330L, 
    240L, 180L), z8 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
    0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
    0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 
    1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 
    0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
    0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 
    1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 
    1L, 1L, 0L, 1L, 0L, 0L, 0L), z9 = c(1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 3L, 3L, 3L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 
    2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 
    3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 3L, 3L, 1L, 1L, 1L, 1L, 
    1L, 1L, 2L, 4L, 4L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
    2L, 2L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L), z10 = c(0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 
    1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
    1L)), .Names = c("group", "t1", "t2", "d1", "d2", "d3", "ta", 
"da", "tc", "dc", "tp", "dp", "z1", "z2", "z3", "z4", "z5", "z6", 
"z7", "z8", "z9", "z10"), class = "data.frame", row.names = c(NA, 
-137L))

1 个答案:

答案 0 :(得分:1)

必须有很多方法来完成这项任务。在这里,我使用tidyverse包介绍我的解决方案。

你的for循环效果很好。但是,我更喜欢能够将所有相关信息存储在数据框中的解决方案。 tidyverse在处理数据框中的数据方面非常方便。

首先,我将bmt从宽格式转换为长格式,然后创建了嵌套数据框

library(tidyverse)

bmt2 <- bmt %>%
  gather(Var1, Value) %>%
  group_by(Var1) %>%
  nest()

嵌套数据框架可能是一个相对较新的概念。但是,如果您键入bmt2$data[[1]]作为示例。您可以看到group列(bmt2的第一行)中的所有数据都存储为子数据框。

接下来,我使用complete函数创建每个变量之间的所有组合,然后与值组合。请注意,mutate_atarrange的最后三行是根据bmt中列名的顺序对数据框进行排序。但是,如果订单不重要,这一步是可选的。

bmt3 <- bmt2 %>%
  select(Var1) %>%
  mutate(Var2 = Var1) %>%
  complete(Var1, Var2) %>%
  filter(Var2 != Var1) %>%
  left_join(bmt2, by = "Var1") %>%
  left_join(bmt2, by = c("Var2" = "Var1")) %>%
  mutate_at(vars(starts_with("Var")), funs(factor(., levels = colnames(bmt)))) %>%
  arrange(Var1, Var2) %>%
  mutate_at(vars(starts_with("Var")), funs(as.character(.)))

扩展数据框准备好后,我可以使用map2_dbl来应用cor.test函数。我将P值存储在Corr_Pvalue列中。

bmt4 <- bmt3 %>%
  mutate(Corr_Pvalue = map2_dbl(data.x, data.y, 
                         ~cor.test(.x$Value, .y$Value, method = "spearman")$p.value))

我还可以通过Messagemutate调用创建一个名为ifelse的新列,显示if变量是&#34;依赖&#34;或者&#34;独立&#34;。

bmt5 <- bmt4 %>%
  select(-data.x, -data.y) %>%
  mutate(Message = ifelse(Corr_Pvalue <= 0.05, "dependent", "independent"))

现在看一下bmt5,我们看到每个组合都有一个相关的P值和相关的&#34;或者&#34;独立的&#34;信息。 bmt5是一个包含摘要信息的数据框,可用于将来的分析。

bmt5
# A tibble: 462 x 4
    Var1  Var2 Corr_Pvalue     Message
   <chr> <chr>       <dbl>       <chr>
 1 group    t1   0.2240859 independent
 2 group    t2   0.2068429 independent
 3 group    d1   0.1691849 independent
 4 group    d2   0.0906152 independent
 5 group    d3   0.1769669 independent
 6 group    ta   0.9899871 independent
 7 group    da   0.2254046 independent
 8 group    tc   0.8407693 independent
 9 group    dc   0.2719835 independent
10 group    tp   0.9103147 independent
# ... with 452 more rows

最后,如果您想要像for-loop那样打印信息,我们可以使用writeLines。它用新行打印每个字符串。

writeLines(text = paste0(bmt5$Var1, " and ", 
                         bmt5$Var2, " are ", 
                         bmt5$Message, ".")) 

group and t1 are independent.
group and t2 are independent.
group and d1 are independent.
group and d2 are independent.
group and d3 are independent.
group and ta are independent.
group and da are independent.
group and tc are independent.
group and dc are independent.
group and tp are independent.
group and dp are independent.
group and z1 are dependent.
...