9
列我試圖規範一些數據我有一個數據幀。我想利用每一個值,並通過與平均值和數值住在列的標準偏差沿pnorm功能運行它使用循環,這裏就是我會寫什麼我想要做的:應用pnorm到數據幀
#example data
hist_data <- data.frame(matrix(rnorm(200,mean=5,sd=.5),nrow=20))
n <- dim(hist_data)[2] #columns=10
k <- dim(hist_data)[1] #rows =20
#set up the data frame which we will populate with a loop
normalized <- data.frame(matrix(nrow = nrow(hist_data), ncol = ncol(hist_data)))
#hot loop in loop action
for (i in 1:n){
for (j in 1:k){
normalized[j,i] <- pnorm(hist_data[j,i],
mean = mean(hist_data[,i]),
sd = sd(hist_data[,i]))
}
}
normalized
看來在R中應該有一個方便的矢量方法來做到這一點。我以爲我很聰明,所以嘗試使用應用功能:
#trouble ahead
hist_data <- data.frame(matrix(rnorm(200, mean = 5,sd = .5), nrow=10))
normalized <- apply(hist_data, 2, pnorm, mean = mean(hist_data), sd = sd(hist_data))
normalized
很讓我懊惱,那不會產生我的預期。輸出的左上角和右下角元素是正確的,但就是這樣。那麼,我怎樣才能讓自己的生活變得無足輕重呢?如果
加分,你能告訴我什麼我的第二個代碼塊實際上是做什麼。對我來說還是一種神祕。 :)
在您的示例代碼什麼的話行和列扭轉評論。此外,所定義的變量n和k持有的行和列,那麼失敗的矩陣命令來使用它們。可能想要清理它,以免別人感到困惑。 – 2009-08-08 06:43:40
好點的寫法是落後的。及 「(j在1:K)」 – 2009-08-08 14:32:46
右:至於n和k,它們在 「用於(N I在1)」 被使用。錯過了第二部分。好帖子! – 2009-08-12 20:20:47