【发布时间】:2018-03-08 17:42:36
【问题描述】:
我有这个函数稍后将应用于 3D 数组f3 <- function(x) {-sum((x / sum(x)) * log2(x / sum(x)))},我正在尝试应用条件,如果函数的第二部分是-Inf(即log2(x/sum(x)=-Inf),那么这部分将是0(即log2(x/sum(x))=0)。我正在尝试在函数内嵌套一个 if 语句(见下文)但暂时不起作用。
f3 <- function(x) {
-sum((x / sum(x)) * log2(x / sum(x)))
if((log2(x/sum(x)))==-Inf) {
log2(x/sum(x))==0
}
}
我在 1000 个 24x24 矩阵 (a) 的 3D 数组上使用这个函数来尝试这个我,我只使用数组 a[,,1] 的第一个矩阵
apply (a[,,1],2,f3)
欢迎任何小提示。 提前致谢。
【问题讨论】:
-
请记住,
=(单等号)是一个赋值运算符,等同于<-。对于比较,您应该使用==(双等号) -
谢谢,我已经正确编辑了问题。我已尝试使用“==”但无法正常工作。
-
通过提供minimal reproducible example让您的问题更清晰
-
这是最初的问题以及最终是如何解决的。 stackoverflow.com/q/49116372/9057078
标签: r function multidimensional-array