用于规范化一个数据帧以应用于 R 中的第二个数据帧的函数
Function for normalizing one data frame to be applied on a second data frame in R
这是家庭作业。
我是 R 的新手
我有两个数据框,每个数据框包含两列数据。我必须找到一个函数,将第一个数据帧标准化为 0 的平均值和 1 的方差 - 对于两列。然后我想将该功能应用于第二个数据框。
我试过这个:
my_scale_test <- function(x,y) {
apply(y, 2, function(x,y) {
(y - mean(x ))/sd(x)
})
}
其中 x 是第一个数据帧,y 是要归一化的数据帧。
有人能帮帮我吗?
编辑:
我现在也试过了,但也没有用:
scale_func <- function(x,y) {
xmean <- mean(x)
xstd <- sd(x)
yout <- y
for (i in 1:length(x[1,]))
yout[,i] <- yout[,i] - xmean[i]
for (i in 1:length(x[1,]))
yout[,i] <- yout[,i]/xsd[i]
invisible(yout)
}
编辑 2:
我为 MatLab 找到了这个工作函数(我试图在编辑 1 中翻译):
function [ Xout ] = scale( Xbase, Xin )
Xmean = mean(Xbase);
Xstd = std(Xbase);
Xout = Xin;
for i=1:length(Xbase(1,:))
Xout(:,i) = Xout(:,i) - Xmean(i);
end
for i=1:length(Xbase(1,:))
Xout(:,i) = Xout(:,i)/Xstd(i);
end
end
谁能帮我翻译一下?
由于您是 R 的新手,让我们尝试一些非常基础的东西。
my_scale_test <- function(x, y) {
y.nrow <- nrow(y)
x.mean <- data.frame(t(apply(x, 2, mean)))
x.sd <- data.frame(t(apply(x, 2, sd)))
# To let x.mean and x.sd have the same dimension as y, let's repeat the rows.
x.mean <- x.mean[rep(1, y.nrow), ]
x.sd <- x.sd[rep(1, y.nrow), ]
(y - x.mean)/x.sd
}
要测试,试试
set.seed(1)
x <- data.frame(matrix(rnorm(10), nrow = 5))
y <- x
result <- my_scale_test(x, y)
apply(result, 2, mean)
apply(result, 2, sd)
这是家庭作业。
我是 R 的新手
我有两个数据框,每个数据框包含两列数据。我必须找到一个函数,将第一个数据帧标准化为 0 的平均值和 1 的方差 - 对于两列。然后我想将该功能应用于第二个数据框。
我试过这个:
my_scale_test <- function(x,y) {
apply(y, 2, function(x,y) {
(y - mean(x ))/sd(x)
})
}
其中 x 是第一个数据帧,y 是要归一化的数据帧。
有人能帮帮我吗?
编辑:
我现在也试过了,但也没有用:
scale_func <- function(x,y) {
xmean <- mean(x)
xstd <- sd(x)
yout <- y
for (i in 1:length(x[1,]))
yout[,i] <- yout[,i] - xmean[i]
for (i in 1:length(x[1,]))
yout[,i] <- yout[,i]/xsd[i]
invisible(yout)
}
编辑 2: 我为 MatLab 找到了这个工作函数(我试图在编辑 1 中翻译):
function [ Xout ] = scale( Xbase, Xin )
Xmean = mean(Xbase);
Xstd = std(Xbase);
Xout = Xin;
for i=1:length(Xbase(1,:))
Xout(:,i) = Xout(:,i) - Xmean(i);
end
for i=1:length(Xbase(1,:))
Xout(:,i) = Xout(:,i)/Xstd(i);
end
end
谁能帮我翻译一下?
由于您是 R 的新手,让我们尝试一些非常基础的东西。
my_scale_test <- function(x, y) {
y.nrow <- nrow(y)
x.mean <- data.frame(t(apply(x, 2, mean)))
x.sd <- data.frame(t(apply(x, 2, sd)))
# To let x.mean and x.sd have the same dimension as y, let's repeat the rows.
x.mean <- x.mean[rep(1, y.nrow), ]
x.sd <- x.sd[rep(1, y.nrow), ]
(y - x.mean)/x.sd
}
要测试,试试
set.seed(1)
x <- data.frame(matrix(rnorm(10), nrow = 5))
y <- x
result <- my_scale_test(x, y)
apply(result, 2, mean)
apply(result, 2, sd)