首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何才能获得相同的对象类型,从而使mapply应用于类似的函数?

如何才能获得相同的对象类型,从而使mapply应用于类似的函数?
EN

Stack Overflow用户
提问于 2015-08-02 03:31:58
回答 1查看 92关注 0票数 0

我得到一个简单的函数,一个我可以用来重建或绘图的对象,而在同一个函数上,当应用mapply时,我不能得到一个对象,而是函数的组件结果。

代码语言:javascript
复制
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相同的对象类型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-02 05:44:42

问题是,默认情况下,mapply()试图将结果简化为矩阵(如果可能的话)。在这种情况下,这是不可取的。您可以使用SIMPLIFY=FALSE参数,也可以只使用Map()。例如

代码语言:javascript
复制
DWT <- Map(function(y,z) wavDWT(x, n.level= y, wavelet= z), ex2$n.levels, ex2$wavelet)

这将返回一个列表。列表中的每一项都是与原始D相同的类。您可以用

代码语言:javascript
复制
class(D) == class(DWT[[1]])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31768302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档