我想用以下元素创建矩阵A [i,j,k]:
如果k + j-s-i = / = 0
,则[i,j,k] = 0[i,j,k] = p [s]如果k + j-s-i = 0(p [s]给定向量)
这可以通过特征函数写为p [s] *ð(k + j-s-i)或者通过Kronecker delta函数写为p [s] *ð(0,k + j-s-i)。 R中是否有任何“内置”功能可以实现 - 我的意思是内置“ð”吗?
或者我必须自己写吗?
我认为构建函数对于f(x)= 0返回1是非常有用的,否则为0,至少对于线性f(x)
答案 0 :(得分:3)
我将其重写为
A[i,j,k] = p[k+j-i] if that exists, otherwise 0
然后可以实现为
p <- c(1,2,3,4,5)
pfun <- function(x) {
if (x < 1 | x > length(p)) {
0
} else {
p[x]
}
}
n <- 5
A <- array(0, c(n, n, n))
for (i in 1:n) {
for (j in 1:n) {
for (k in 1:n) {
A[i,j,k] <- pfun(k+j-i)
}
}
}
可能有一些优于三重嵌套for循环的东西。
至于你问的功能,就像
这样简单as.numeric(f(x)==0)
会起作用。