2017-06-21 47 views
0

我試圖創建一個使用一個for循環,簡單的矩陣卻遠沒有那麼工作....我與R.R-如何填寫與循環

現在開始

N = 17矩陣

-M是含有肯德爾tau蛋白的b值,NcoI位= 10個NROWS矩陣= 1

n <- length(plot[,2]); 
z1a <- 1.96; 

M1=matrix(data=NA, ncol= 10, nrow = 2); 

for (i in M[,1:10]){ 
    #print(i) 
    zr <- (1/2)*log((1+i)/(1-i)); 
    SE <- sqrt(0.437/(n-4)); 
    zU <- zr+z1a*SE; 
    zL <- zr-z1a*SE; 
    rL <- (exp(2*zL)-1)/(exp(2*zL)+1); 
    rU <- (exp(2*zU)-1)/(exp(2*zU)+1); 

    #print(rL) 
    #print(rU) 

    M1 [1,1:10] <- (exp(2*zL)-1)/(exp(2*zL)+1); 
    M1 [2,1:10] <- (exp(2*zU)-1)/(exp(2*zU)+1); 
} 

的代碼的最後一行是隻是爲了瞭解我想如何填充矩陣。我該如何解決這個問題?

+2

在您的問題中有一些缺失的方面會讓我們更容易理解您的問題。例如,n是未知的,M是未知的。此外,通過您的代碼,矩陣M1的第一行和第二行將具有循環值。 –

+0

先創建一個'list',然後轉換爲'matrix'。例如,嘗試'L < - c(1,1,1,2,2,2,3,3,3)'然後'矩陣(L,ncol = 3)'來看看這可能如何工作。 – CPak

+0

我糾正了這個問題... –

回答

0

我不確定我是否理解這個問題。這是你想要的?我已經發起M爲從0到1的隨機統一號碼。

z1a <- 1.96; 
n <- 17 
set.seed(1) 

M = runif(10) 
M1 = matrix(data = NA, ncol = 10, nrow = 2); 

zr <- (1/2)*log((1+M)/(1-M)); 
SE <- sqrt(0.437/(n-4)); 
zU <- zr+z1a*SE; 
zL <- zr-z1a*SE; 
rL <- (exp(2*zL)-1)/(exp(2*zL)+1); 
rU <- (exp(2*zU)-1)/(exp(2*zU)+1); 

M1 [1,1:10] <- (exp(2*zL)-1)/(exp(2*zL)+1);  
M1 [2,1:10] <- (exp(2*zU)-1)/(exp(2*zU)+1); 
+0

完美...謝謝... –