简体   繁体   English

访问R中的矩阵

[英]accessing matrix in R

i have a matrix in R as follows: 我在R中有一个矩阵如下:

                     YITEMREVENUE    XCARTADD XCARTUNIQADD XCARTADDTOTALRS
YITEMREVENUE         1.0000000000 -0.02630016 -0.01811156    0.0008988723      
XCARTADD            -0.0263001551  1.00000000   0.02955307   -0.0438881639   
XCARTUNIQADD        -0.0181115638  0.02955307   1.00000000    0.0917359285  
XCARTADDTOTALRS      0.0008988723 -0.04388816   0.09173593    1.0000000000       

i want to list out the names of the columns with negative values only.. my output should look like: 我想列出只有负值的列的名称..我的输出应该如下所示:

YITEMREVENUE -  XCARTADD XCARTUNIQADD  
XCARTADD     -  YITEMREVENUE XCARTADDTOTALRS  
XCARTUNIQADD -  YITEMREVENUE   
XCARTADDTOTALRS - XCARTADD

is it possible in R? R有可能吗?

If your data are in a data frame called m , you can use the following : 如果您的数据位于名为m的数据框中,则可以使用以下内容:

lapply(m, function(v) {rownames(m)[v<0]})

If your data are in a matrix called m, you can use : 如果您的数据位于名为m的矩阵中,您可以使用:

apply(m, 2,function(v) {rownames(m)[v<0]})

In both cases, you will get a list like this : 在这两种情况下,您都会得到如下列表:

$YITEMREVENUE
[1] "XCARTADD"     "XCARTUNIQADD"

$XCARTADD
[1] "YITEMREVENUE"    "XCARTADDTOTALRS"

$XCARTUNIQADD
[1] "YITEMREVENUE"

$XCARTADDTOTALRS
[1] "XCARTADD"

I would first cast the matrix to a data.frame, in code this would be: 我首先将矩阵转换为data.frame,在代码中这将是:

# Some example data
dat = matrix(runif(9) - 0.5, 3, 3)
dimnames(dat) = list(LETTERS[1:3], LETTERS[1:3])
> dat
           A          B           C
A  0.1216529  0.3501861  0.47473598
B -0.4720577  0.4887181 -0.41118597
C  0.4406510 -0.2516563  0.02344829

# Cast to data.frame
library(reshape)
df = melt(dat)
df
 X1 X2       value
1  A  A  0.12165293
2  B  A -0.47205771
3  C  A  0.44065104
4  A  B  0.35018605
5  B  B  0.48871810
6  C  B -0.25165634
7  A  C  0.47473598
8  B  C -0.41118597
9  C  C  0.02344829

# And find the combinations of row-columns which have < 0
df[df$value < 0, c("X1","X2")]
  X1 X2
2  B  A
6  C  B
8  B  C

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM