首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将公式对象处理为字符对象?

如何将公式对象处理为字符对象?
EN

Stack Overflow用户
提问于 2019-06-21 06:59:20
回答 2查看 66关注 0票数 4

以下是我的问题:

代码语言:javascript
复制
formula = label ~ m1 + m2 + m2m1 + topix + sp500 + Open + High + Low +
  Close + Volume + psyco12 + psyco24 + closeB5 + closeB10 +
  closeB20 + closeB60 + William5 + William8 + William13 + William21 +
  William34 + RSV9 + K + D + KD + MA5 + MA10 + MA20 + MA60 +
  MA120 + MA240 + MA5MA20 + DI + EMA12 + EMA26 + DIF + MACD +
  OSC + change + RSI6p + RSI6m + RSI6 + RSI12p + RSI12m + RSI12 +
  RSI6RSI12 + OBV + JPYUSD + MarCap + MonthVol + MonthVal +
  GV

类(公式)是公式

我想把它转换成以下格式。

代码语言:javascript
复制
c("m1","m2","m2m1","topix","sp500","Open","High","Low",
                 "Close","Volume","psyco12","psyco24","closeB5","closeB10", 
                 "closeB20","closeB60","William5","William8","William13","William21",
                 "William34","RSV9","K","D","KD","MA5","MA10","MA20","MA60",
                 "MA120","MA240","MA5MA20","DI","EMA12","EMA26","DIF","MACD",
                 "OSC","change","RSI6p","RSI6m","RSI6","RSI12p","RSI12m","RSI12", 
                 "RSI6RSI12","OBV","JPYUSD","MarCap","MonthVol","MonthVal","GV")

包括c()

我怎么才能把这事做好?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-21 07:00:48

一个选项是reformulate,将名称的vector转换为公式。

代码语言:javascript
复制
f1 <- reformulate(v1, "label")

相反,请使用all.vars

代码语言:javascript
复制
v2 <- all.vars(f1)[-1]
dput(v2)
c("m1", "m2", "m2m1", "topix", "sp500", "Open", "High", "Low", 
"Close", "Volume", "psyco12", "psyco24", "closeB5", "closeB10", 
"closeB20", "closeB60", "William5", "William8", "William13", 
"William21", "William34", "RSV9", "K", "D", "KD", "MA5", "MA10", 
"MA20", "MA60", "MA120", "MA240", "MA5MA20", "DI", "EMA12", "EMA26", 
"DIF", "MACD", "OSC", "change", "RSI6p", "RSI6m", "RSI6", "RSI12p", 
"RSI12m", "RSI12", "RSI6RSI12", "OBV", "JPYUSD", "MarCap", "MonthVol", 
"MonthVal", "GV")

或者如果有多个因变量

代码语言:javascript
复制
all.vars(as.list(f1)[[3]])

数据

代码语言:javascript
复制
v1 <- c("m1","m2","m2m1","topix","sp500","Open","High","Low",
                 "Close","Volume","psyco12","psyco24","closeB5","closeB10", 
                 "closeB20","closeB60","William5","William8","William13","William21",
                 "William34","RSV9","K","D","KD","MA5","MA10","MA20","MA60",
                 "MA120","MA240","MA5MA20","DI","EMA12","EMA26","DIF","MACD",
                 "OSC","change","RSI6p","RSI6m","RSI6","RSI12p","RSI12m","RSI12", 
                 "RSI6RSI12","OBV","JPYUSD","MarCap","MonthVol","MonthVal","GV")
票数 5
EN

Stack Overflow用户

发布于 2019-06-21 07:13:23

下面是使用@akrun的数据(v1)的另一个选项。按照关于公式的文档,可以使用以下方法获取变量:

代码语言:javascript
复制
attr(terms.formula(formula), "term.labels")
# output
 [1] "m1"        "m2"        "m2m1"      "topix"     "sp500"    
 [6] "Open"      "High"      "Low"       "Close"     "Volume"   
[11] "psyco12"   "psyco24"   "closeB5"   "closeB10"  "closeB20" 
[16] "closeB60"  "William5"  "William8"  "William13" "William21"
[21] "William34" "RSV9"      "K"         "D"         "KD"       
[26] "MA5"       "MA10"      "MA20"      "MA60"      "MA120"    
[31] "MA240"     "MA5MA20"   "DI"        "EMA12"     "EMA26"    
[36] "DIF"       "MACD"      "OSC"       "change"    "RSI6p"    
[41] "RSI6m"     "RSI6"      "RSI12p"    "RSI12m"    "RSI12"    
[46] "RSI6RSI12" "OBV"       "JPYUSD"    "MarCap"    "MonthVol" 
[51] "MonthVal"  "GV"

现在,您只需将dput()应用于上面的对象,就可以包含c()

代码语言:javascript
复制
dput(attr(terms.formula(formula), "term.labels"))
# output
c("m1", "m2", "m2m1", "topix", "sp500", "Open", "High", "Low", 
"Close", "Volume", "psyco12", "psyco24", "closeB5", "closeB10", 
"closeB20", "closeB60", "William5", "William8", "William13", 
"William21", "William34", "RSV9", "K", "D", "KD", "MA5", "MA10", 
"MA20", "MA60", "MA120", "MA240", "MA5MA20", "DI", "EMA12", "EMA26", 
"DIF", "MACD", "OSC", "change", "RSI6p", "RSI6m", "RSI6", "RSI12p", 
"RSI12m", "RSI12", "RSI6RSI12", "OBV", "JPYUSD", "MarCap", "MonthVol", 
"MonthVal", "GV")

公式的定义:

代码语言:javascript
复制
formula <- as.formula(paste("label ~ ", paste(v1, collapse = " + "), sep = ""))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56698394

复制
相关文章

相似问题

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