如何从R中的列表中提取名称

时间:2014-01-22 22:42:41

标签: r

我在R中有一个包含2个变量的数据框[例如身高,体重]我想计算一些其他协变量[如性别,种族]的相关性。

我想计算每组性别和种族的身高与体重的R ^ 2值。例如。男性和女性的身高与体重的R ^ 2高加索人,女性和女性高加索人,男性和女性亚洲人,女性和女性高加索人等

我发现“by”命令在这方面很有用。

cor <- by(data[,c(6,7)],list(data$sex,data$ethnicity),cor)

> cor
: Female
: African American
           wt      ht
wt  1.0000000 0.6879572
ht  0.6879572 1.0000000
------------------------------------------------------------------------------------------------------------------------------------------------ 
: Male
: African American
           wt      ht
wt  1.0000000 0.6868178
ht  0.6868178 1.0000000
------------------------------------------------------------------------------------------------------------------------------------------------ 
: Female
: Hispanic
           wt      ht
wt  1.0000000 0.6162962
ht  0.6162962 1.0000000
------------------------------------------------------------------------------------------------------------------------------------------------ 
: Male
: Hispanic
           wt      ht
wt  1.0000000 0.5854748
ht  0.5854748 1.0000000

我的问题是,我想将这些列表形式的结果转换为包含以下列的数据框:

R2_value 性别 种族

我的问题是如何从“cor”列表中提取性别和种族的价值(我的输出来自“by”命令)。

当我做“cor [[1]]”时,我只得到女性,非裔美国人的相关矩阵。

调用“姓名(cor)”并不能满足我的要求。

1 个答案:

答案 0 :(得分:0)

这是解决此问题的第一次尝试。我不确定输出是否有效,因为您没有表达您最初的数据。请尝试代码并报告您的结果!

set.seed(123)
# Coerce your data.frame to a data.table
require("data.table")
DT <- data.table(data)
DT <- data.table(wt = rnorm(100, 80, 10), 
                 ht = rnorm(100, 110, 10),
                 sex = factor(sample(c("MALE", "FEMALE"), 100, replace = T)),
                 ethnicity = factor(sample(c("African American", "Hispanic"), 100, replace = T))
                 )

str(DT)

DT[, cor(wt,ht), by="sex,ethnicity"]