【发布时间】:2014-11-10 19:38:34
【问题描述】:
我有一个名为 returns 的数据框,其中包含不同的列,例如 simple。我通常通过returns$simple 访问它。现在我需要将这些列传递给一个函数。我尝试了很多我在板上找到的东西(as.formula、parse、paste 等),但都没有奏效。
test = function(x)
{
returns$x
}
test(simple)
【问题讨论】:
我有一个名为 returns 的数据框,其中包含不同的列,例如 simple。我通常通过returns$simple 访问它。现在我需要将这些列传递给一个函数。我尝试了很多我在板上找到的东西(as.formula、parse、paste 等),但都没有奏效。
test = function(x)
{
returns$x
}
test(simple)
【问题讨论】:
您可以使用括号表示法访问您的列。以下是你的做法:
test = function(x)
{
returns[,x]
}
test("simple")
或者简单地说(不使用函数):
returns[, column_name]
【讨论】:
您可以根据列的名称使用[[ 来处理列中的值。如果不想在调用函数时引用列名,则必须使用deparse和substitute。
test <- function(x)
{
xc <- deparse(substitute(x))
returns[[xc]]
}
test(simple)
【讨论】:
试试这个
returns[,x] # a
或获取列 id,使用哪个。
which(names(returns)==x) # b
另一个想法是使用grep
grep("^x$", colnames(returns)) # c
grep("^x$", names(returns)) # d
【讨论】: