首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将一个变量与R上的所有其他变量关联起来

如何将一个变量与R上的所有其他变量关联起来
EN

Stack Overflow用户
提问于 2013-12-06 05:09:38
回答 3查看 38.8K关注 0票数 9

我想要将一个变量(比如酪氨酸)与R上的所有其他变量(大约200种其他代谢物,如尿素、葡萄糖、肌苷等)联系起来,但我不确定该怎么做。我是R的新手。

我已经学习了配对函数,但它将每个代谢物配对在指定的范围内。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-12-06 05:32:17

既然你提到了“代谢物”,我假设你的指标是“浓度”,例如,你有一个矩阵,称为data,每个代谢物有一列,每个样品有一行。

所以,就像这样:

代码语言:javascript
复制
# just generates example - YOU SHOULD PROVIDE THIS!!!
data <- data.frame(tyrosine=1:10 + rnorm(10,sd=2), 
                   urea    =2*1:10 + rnorm(10,sd=2),
                   glucose =30 -2*1:10 +rnorm(10,sd=2),
                   inosine =25 -1:10 + rnorm(10,sd=2))
data
     tyrosine      urea  glucose  inosine
1  -0.2529076  5.023562 29.83795 26.71736
2   2.3672866  4.779686 27.56427 22.79442
3   1.3287428  4.757519 24.14913 22.77534
4   7.1905616  3.570600 18.02130 20.89239
5   5.6590155 12.249862 21.23965 17.24588
6   4.3590632 11.910133 17.88774 18.17001
7   7.9748581 13.967619 15.68841 17.21142
8   9.4766494 17.887672 11.05850 16.88137
9  10.1515627 19.642442 11.04370 18.20005
10  9.3892232 21.187803 10.83588 16.52635

要获取相关系数,只需键入:

代码语言:javascript
复制
cor(data)
           tyrosine       urea    glucose    inosine
tyrosine  1.0000000  0.8087897 -0.9545523 -0.8512938
urea      0.8087897  1.0000000 -0.8577782 -0.8086910
glucose  -0.9545523 -0.8577782  1.0000000  0.8608000
inosine  -0.8512938 -0.8086910  0.8608000  1.0000000

要生成散点图矩阵,只需键入:

代码语言:javascript
复制
pairs(data)

将来,请提供一个可以导入到R中的数据示例。

票数 11
EN

Stack Overflow用户

发布于 2013-12-06 05:19:08

在下面的示例中,我简单地将一个包含所有变量的数据帧拆分为两个矩阵。可以在cor函数中输入以下内容以获取相关值:

代码语言:javascript
复制
set.seed(1)
n=20
df <- data.frame(tyrosine=runif(n), urea=runif(n), glucose=runif(n), inosine=runif(n))
df

COR <- cor(as.matrix(df[,1]), as.matrix(df[,-1]))
COR
#           urea    glucose    inosine
#[1,] -0.2373854 -0.3672984 -0.3393602
票数 10
EN

Stack Overflow用户

发布于 2013-12-06 06:32:07

与框中的Marc类似,使用apply和列名

代码语言:javascript
复制
> set.seed(1)
> n=20
> df <- data.frame(tyrosine=runif(n), urea=runif(n), glucose=runif(n), 
  inosine=runif(n))

> apply(df,2, function(col)cor(col, df$tyrosine))

tyrosine       urea    glucose    inosine 
1.0000000 -0.2373854 -0.3672984 -0.3393602 

对于合理大小的数据,这是一个很好的问题和模式,因为如果你只想要酪氨酸cors ( OP特别要求的)只计算酪氨酸cors (n时间+空间),而不是全部vs all (~n^2时间+空间),那么它是有效的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20410768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档