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