Masi - 1 year ago 149

R Question

I have a list of 9 lists, see the following code where I want to loop only three lists

`p`

`r`

`t`

The current pseudocode is the following where the test function is

`corrplot(M.cor, ...)`

`for (i in p.mat.all) {`

...

}

Code with

`mtcars`

`library("psych")`

library("corrplot")

M <- mtcars

M.cor <- cor(M)

p.mat.all <- psych::corr.test(M.cor, method = c("pearson", "kendall", "spearman"),

adjust = "none", ci = F)

str(p.mat.all)

str(p.mat.all$r)

str(p.mat.all$t)

str(p.mat.all$p)

Output about the list of 9 lists

`List of 9`

$ r : num [1:11, 1:11] 1 -0.991 -0.993 -0.956 0.939 ...

..- attr(*, "dimnames")=List of 2

.. ..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

.. ..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

$ n : num 11

$ t : num [1:11, 1:11] Inf -21.92 -25.4 -9.78 8.22 ...

..- attr(*, "dimnames")=List of 2

.. ..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

.. ..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

$ p : num [1:11, 1:11] 0.00 4.04e-09 1.09e-09 4.32e-06 1.78e-05 ...

..- attr(*, "dimnames")=List of 2

.. ..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

.. ..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

$ se : num [1:11, 1:11] 0 0.0452 0.0391 0.0978 0.1143 ...

..- attr(*, "dimnames")=List of 2

.. ..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

.. ..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

$ adjust: chr "none"

$ sym : logi TRUE

$ ci : NULL

$ Call : language psych::corr.test(x = M.cor, method = c("pearson", "kendall", "spearman"), adjust = "none", ci = F)

- attr(*, "class")= chr [1:2] "psych" "corr.test"

num [1:11, 1:11] 1 -0.991 -0.993 -0.956 0.939 ...

- attr(*, "dimnames")=List of 2

..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

num [1:11, 1:11] Inf -21.92 -25.4 -9.78 8.22 ...

- attr(*, "dimnames")=List of 2

..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

num [1:11, 1:11] 0.00 4.04e-09 1.09e-09 4.32e-06 1.78e-05 ...

- attr(*, "dimnames")=List of 2

..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...

My pseudocode about looping all three correlations with the test function

`corrplot`

`for (i in p.mat.all) {`

p.mat <- i

print("p.mat ===========")

print(i)

alpha <- 0.05

corrplot( M.cor,

method="color",

type="upper",

addCoefasPercent = TRUE,

tl.col = "black",

tl.pos = "td",

p.mat = p.mat, sig.level = alpha, insig = "blank",

order = "original"

)

}

Expected output: loop only

`t`

`p`

`r`

`corrplot`

R: 3.3.1

OS: Debian 8.5

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

Or with an *apply function:

```
lapply(p.mat.all[c("r","p","t")], function(x) {
# x takes now first p.mat.all$r, then p.mat.all$p, etc
print("p.mat ===========")
print(x)
alpha <- 0.05
corrplot( M.cor,
method="color",
type="upper",
addCoefasPercent = TRUE,
tl.col = "black",
tl.pos = "td",
p.mat = x, sig.level = alpha, insig = "blank",
order = "original"
)
})
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**