我如何使用循环来获取所有变量对的xtabs函数结果?

时间:2014-09-23 07:41:09

标签: r loops

我想在我的数据帧中获得每个变量对的xtabs函数结果(其中一个变量是永久变量,另一个变量应该来自存储在数据框中的其余变量)。我知道怎么做它每次手动一对,但我有很多变量,我想找到一种方法来循环它。不知道怎么办呢? 这是一个示例数据框:

dat <- read.table(text = " category birds    wolfs     snakes
                   yes        3        9         7
                   no         3        8         4
                   no         1        2         8
                   yes        1        2         3
                   yes        1        8         3
                   no         6        1         2
                   yes        6        7         1
                   no         6        1         5
                   yes        5        9         7
                   no         3        8         7
                   no         4        2         7
                   yes        1        2         3
                   yes        7        6         3
                   no         6        1         1
                   yes        6        3         9
                   no         6        1         1   ",header = TRUE)

手动我使用这行代码来获得我需要的东西:

xtabs(~category + birds, data = dat)
xtabs(~category + wolfs , data = dat)  
xtabs(~category + snakes, data = dat)

但是当我有很多变量时,这可能会非常低效。

1 个答案:

答案 0 :(得分:4)

尝试:

apply(dat[,2:4], 2, function(x) xtabs(~dat$category+x) )
$birds
            x
dat$category 1 3 4 5 6 7
         no  1 2 1 0 4 0
         yes 3 1 0 1 2 1

$wolfs
            x
dat$category 1 2 3 6 7 8 9
         no  4 2 0 0 0 2 0
         yes 0 2 1 1 1 1 2

$snakes
            x
dat$category 1 2 3 4 5 7 8 9
         no  2 1 0 1 1 2 1 0
         yes 1 0 4 0 0 2 0 1