如何在R语言函数中通过名称访问xts对象的列?
如何在函数中通过名称访问xts对象的列?
你的代码返回NULL的原因是:使用ts$name时,R会将name当作字面列名处理,而不是解析你传入的变量值"GSPC.Close",自然找不到对应的列。
以下是两种可行的解决方法:
方法1:使用方括号索引
方括号会解析变量的实际值,返回单列的xts对象:
getSymbols("^GSPC", src="yahoo", from="2015-01-01", to = "2020-06-04") str(GSPC) frog <- function(ts, name) { ts[, name] } frog(GSPC, "GSPC.Close")
方法2:使用双括号索引
双括号同样会解析变量值,返回和$访问一致的底层向量:
getSymbols("^GSPC", src="yahoo", from="2015-01-01", to = "2020-06-04") str(GSPC) frog <- function(ts, name) { ts[[name]] } frog(GSPC, "GSPC.Close")
简单总结:
$仅支持字面量列名,无法解析变量[, ]和[[ ]]可以解析变量,适合在函数中动态访问列
内容的提问来源于stack exchange,提问作者Ray Tayek
相关产品推荐
相关产品推荐

