Tôi đang cố gắng chuẩn hóa một số dữ liệu mà tôi có trong một khung dữ liệu. Tôi muốn lấy mỗi giá trị và chạy nó thông qua chức năng pnorm cùng với giá trị trung bình và độ lệch chuẩn của cột giá trị sống trong Sử dụng vòng, dưới đây là cách tôi sẽ viết ra những gì tôi muốn làm:.Áp dụng pnorm cho các cột của một khung dữ liệu
#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
Có vẻ như trong R có một cách vector dandy tiện dụng để làm điều này. Tôi nghĩ rằng tôi đã thông minh nên đã thử sử dụng hàm áp dụng:
#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
Rất tiếc, tôi không tạo ra những gì tôi mong đợi. Các phần tử bên trái và dưới bên phải của đầu ra là chính xác, nhưng đó là nó. Vậy làm thế nào tôi có thể loại bỏ cuộc sống của mình?
Điểm thưởng nếu bạn có thể cho tôi biết khối mã thứ hai của tôi thực sự đang làm gì. Một loại bí ẩn đối với tôi. :)
Trong mã ví dụ của bạn, những lời hàng và cột được đảo ngược trong các bình luận, ý kiến. Ngoài ra, bạn xác định các biến n và k để giữ các cột và hàng, sau đó không sử dụng chúng trong lệnh ma trận. Có thể muốn làm sạch nó để những người khác không bối rối. –
điểm tốt về từ ngữ bị lạc hậu. Nhưng đối với n và k, chúng được sử dụng trong "for (i in 1: n)" và "for (j in 1: k)" –
Right. Bỏ lỡ phần thứ hai. Tốt đăng bài! –