-2
僞矩陣操作,我試着找出如何用R中的數值矩陣創建二元矩陣?
- 如果矩陣單元格值<α,把1
- ,否則爲0
我想創建一個二元矩陣與從p值矩陣p.mat
alpha,但我不能正確處理apply
我試圖滿足僞代碼。
第一種方法
# http://stackoverflow.com/a/4236383/54964
new <- apply(p.mat.p, 1, function(x)
if (alpha > x) {
x <- 0
} else {
x <- 1
}
)
第二條本辦法,但未能
new <- apply(p.mat.p, 1, function(x)
x <- (x < alpha)
)
print(new)
#Error in match.fun(FUN) : argument "FUN" is missing, with no default
#Calls: apply -> match.fun
#Execution halted
審判和代碼
library("psych")
ids <- seq(1,11)
M.cor <- cor(mtcars)
colnames(M.cor) <- ids
rownames(M.cor) <- ids
p.mat <- psych::corr.test(M.cor, adjust = "none", ci = F)
p.mat.p <- p.mat[["p"]]
alpha <- .00000005
# http://stackoverflow.com/a/4236383/54964
new <- apply(p.mat.p, 1, function(x)
if (alpha > x) {
x <- 0
} else {
x <- 1
}
)
#Error in alpha > x :
# comparison (6) is possible only for atomic and list types
#Calls: sapply -> lapply -> FUN
#Execution halted
示例具有正方形矩陣和alpha值的p值。
輸入:n×n個具有p值矩陣 = p.mat.p
# str(p.mat.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] "1" "2" "3" "4" ...
..$ : chr [1:11] "1" "2" "3" "4" ...
# 1 2 3 4 5
#1 0.000000e+00 4.037623e-09 1.091445e-09 4.322152e-06 1.780708e-05
#2 4.037623e-09 0.000000e+00 1.659424e-09 5.625666e-07 5.174268e-05
#3 1.091445e-09 1.659424e-09 0.000000e+00 1.304240e-05 4.935086e-06
...
預期輸出:n×n個一和零,α-= 0.2和期望的輸出的二進制矩陣是
[,1] [,2] [,3] [,4] [,5]
[1,] FALSE TRUE FALSE TRUE FALSE
[2,] TRUE TRUE TRUE TRUE TRUE
[3,] TRUE TRUE TRUE TRUE TRUE
R:3.3.1
操作系統:Debian 8.5
你能給輸入矩陣加上阿爾法值,然後想要的輸出矩陣?我不確定你是否只是尋找一些地板/天花板功能。 – hhh
'as.numeric(your_matrix
Gregor
使用您的試用碼可以正常工作。在新的R會話中再次嘗試。 – Gregor