r - 两个代码有什么不同?
问题描述
我不知道两个代码之间有什么不同。当我使用ml.norm(iris[1:4], mode="uv",na.rm=FALSE)和dh.norm(iris[1:4], mode="uv",na.rm=FALSE),结果不同..`
ml.norm <- function(x, mode="uv", na.rm=FALSE){
if(class(x)=="data.frame"){
x <- as.matrix(x)
}
else{
return (apply(x,2,ml.norm, mode=mode, na.rm=na.rm))
}
if (mode =="uv"){
x = x/sd(x, na.rm=na.rm)
}
else if (mode =="z"){
x = (x-mean(x))/sd(x, na.rm=na.rm)
}
else{stop(paste("unknow mode", mode))}
return(x)
}
dh.norm <- function (x,mode="uv",na.rm=FALSE) {
# need to check if x is a matrix
if (is.data.frame(x)) {
x=as.matrix(x)
}
if (is.matrix(x)) {
return(apply(x,2,dh.norm,mode=mode,na.rm=na.rm))
}
if (mode == "uv") {
x = x/sd(x,na.rm=na.rm)
} else if (mode == "z") {
# your code here
x = (x - mean(x))/sd(x,na.rm=na.rm)
} else {
stop(paste("unknown mode",mode))
}
return(x)
}
解决方案
ml.norm
IF x IS data.frame 将其转换为矩阵。然后检查模式并做一些事情。
dh.norm
IF x IS a data.frame DO 将其转换为矩阵。然后检查 x 是否为矩阵并在列上应用 dh.norm。然后检查模式并做一些事情。
如果您在data.frame 上运行它,ml.norm
则缺少该部分。return(apply(x,2,[YOUR FUNCTION],mode=mode,na.rm=na.rm))
推荐阅读
- firebase - 如何从我自己计算机上的 firebase 存储中下载文件(任何类型,可以是 csv、image、json)?
- cuda - 使用 ncu (NsightComputeCli) 获取 nvprof 默认行为
- usb - 现场 USB 持久性到使用本身
- git - 如何使用 github API 获取特定用户向其发出拉取请求的项目列表?
- javascript - 如何使用父容器控制一组视频?
- android - Android - 设置应用程序的默认“打开支持的链接”选项
- python-3.x - if语句python for循环中的循环错误
- python - 在 google colab 上永久添加路径
- spring - Spring MVC 5 Rest API 使用 JAXB 将 XML 转换为 Bean
- android - 如何清除 Api 29 及更低版本上的 Windownsets 类型标志