这是我的问题:
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
class(formula)是公式
我想将其转换为以下格式。
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()
我该如何做?
答案 0 :(得分:5)
可以选择reformulate
将名称的vector
转换为公式
f1 <- reformulate(v1, "label")
反之,请使用all.vars
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")
或者如果有多个因变量,
all.vars(as.list(f1)[[3]])
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")
答案 1 :(得分:4)
这是使用@akrun数据(v1
)的另一个选项。按照formula上的文档,您可以使用以下方法获取变量:
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()
:
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")
公式的定义:
formula <- as.formula(paste("label ~ ", paste(v1, collapse = " + "), sep = ""))