我现在需要将输出的S_sequence,输入到计算E序列的函数中,继续进行运算,但是代码报错,请大家看看我的计算E序列的函数该怎么修改
matrix_data <- matrix(1:30, nrow = 6, ncol = 5)
print(matrix_data)
lambda<-0.1
M<-2
n <- 6
#计算S序列
compute_S <- function(data, lambda, M) {
S <- matrix(list(), nrow = (n-M+1), ncol = M, byrow = FALSE)
# 计算 S 序列
for (m in 1:(n-M+1)) {
for (l in 1:M) {
if (l == 1) {
S[[m, l]] <- lambda * data[m + l - 1,] + (1 - lambda) * rep(0, 5) # S_{m,0} 是零向量
} else {
S[[m, l]] <- lambda * data[m + l - 1,] + (1 - lambda) * S[[m, l - 1]]
}
}
}
return(S)
}
# 计算 S 序列
S_sequence <- compute_S(matrix_data, lambda, M)
print(S_sequence)
S_sequence[5,2]
#计算E序列
compute_E <- function(S, M) {
E <- (matrix(0, (n+1), 6) ) # 假设每个E_i都是6维向量
# 计算 E 序列
for (i in 1:(n+1)) {
if (i <= M) {
E[i,] <- unlist(S[[1,i]])
} else {
E[i,] <- unlist(S[[i-M,M]])
}
}
return(E)
}
# 计算 E 序列
E_sequence <- compute_E(S_sequence, M)
print(E_sequence)
报错:错误于E[i, ] <- unlist(S[[1, i]]): 被替换的项目不是替换值长度的倍数