首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lapply后的列名

lapply后的列名
EN

Stack Overflow用户
提问于 2012-07-09 02:11:53
回答 1查看 794关注 0票数 1

我有这样填充的数据集:

代码语言:javascript
复制
tickers <- c("SPY","DIA")

 l_ply(tickers, function(sym) try(getSymbols(sym, from="2012-03-01",
 to=Sys.Date())))  

ClosePrices <- do.call(merge, lapply(tickers, function(x) Cl(get(x))))

代码语言:javascript
复制
tail(ClosePrices)

          SPY.Close DIA.Close
2012-06-29    136.10    128.45
2012-07-02    136.51    128.36

代码语言:javascript
复制
rsipx <- do.call(merge, lapply(ClosePrices, FUN=function(ClosePrices) RSI(ClosePrices)))  

    tail(rsipx)
           SPY.Close DIA.Close
2012-06-29  58.36391  58.92043
2012-07-02  59.37153  58.53483

我不能解决的问题是,当我应用一个为每个输入生成多列的函数时。在这种情况下,ADX产生4个值(DIp、DIn、DX、ADX):

代码语言:javascript
复制
adxpx <- do.call(merge, lapply(tickers, FUN=function(tickers) ADX(get(tickers))))  
tail(adxpx)
               DIp      DIn       DX      ADX    DIp.1    DIn.1     DX.1    ADX.1
2012-06-29 53.47713 35.90631 19.65780 15.30299 55.14765 36.05527 20.93395 18.20818
2012-07-02 55.79485 32.58420 26.26262 16.08582 56.67699 33.08770 26.27903 18.78467

如何获得对应的列名而不是数字?(DX.DIA而不是DX.1),还是只选择$ADX指定的列?

EN

回答 1

Stack Overflow用户

发布于 2012-07-09 02:24:26

只需将自动收报机名称paste到传递给lapply的函数内的列名上

代码语言:javascript
复制
foo <- function(tickers){
    res <-  ADX(get(tickers))
    colnames(res) <- paste(colnames(res),tickers,sep = ".")
    res
}
adxpx <- do.call(merge, lapply(tickers, FUN=foo))  

如果只想要一列,可以将函数foo更改为只选择该列。比方说,添加一行(在更改列名之前),比如res <- res[,4]或其他什么。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11385443

复制
相关文章

相似问题

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