我得到一个简单的函数,一个我可以用来重建或绘图的对象,而在同一个函数上,当应用mapply时,我不能得到一个对象,而是函数的组件结果。
library(wmtsa)
x<-c(1,2,3,4,5,6,7,8,9,9,8,7,8,7,6,5,4,3,2,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1)
# Now normal-results in an object I could use to plot or reconstruct.
D <- wavDWT(x, n.level= 5, wavelet= "s2")
D
# Now different results than above as per using mapply on the same function.
wavelet <- wavelet<- c("d2","s2","d4","s4","d6")
nlevel <- seq(1: as.integer (floor (logb ((length(x)),base=2))))
ex2 <- expand.grid(n.levels = nlevel, wavelet=wavelet, stringsAsFactors = FALSE)
D <- mapply(function(y,z) wavDWT(x, n.level= y, wavelet= z), ex2$n.level, ex2$wavelet)
# Desired Output result of using regular function is "wavTransform" object
D
Discrete Wavelet Transform of x
-------------------------------
Wavelet : s2
Length of series : 36
Number of levels : 5
Boundary correction rule : periodic
Filtering technique : convolution
Zero phase shifted : FALSE
Crystals : d1 d2 d3 d4 d5 s5 extra 如何在DWT中获得与简单函数结果D相同的对象类型?
发布于 2015-08-02 05:44:42
问题是,默认情况下,mapply()试图将结果简化为矩阵(如果可能的话)。在这种情况下,这是不可取的。您可以使用SIMPLIFY=FALSE参数,也可以只使用Map()。例如
DWT <- Map(function(y,z) wavDWT(x, n.level= y, wavelet= z), ex2$n.levels, ex2$wavelet)这将返回一个列表。列表中的每一项都是与原始D相同的类。您可以用
class(D) == class(DWT[[1]])https://stackoverflow.com/questions/31768302
复制相似问题