R - 将字符串传递给数据帧子集的公式

时间:2014-11-10 19:38:34

标签: r string function

我有一个名为returns的数据框,其中包含不同的列,例如simple。我通常通过returns$simple访问它。现在我需要将这些列传递给函数。我尝试了很多我在电路板上找到的东西(as.formulaparsepaste等等),但没有一个有效。

test = function(x) 
{ 
  returns$x
}
test(simple)

3 个答案:

答案 0 :(得分:1)

您可以使用括号表示法访问列。这是你如何做到的:

test = function(x) 
{ 
    returns[,x]
}
test("simple")

或简单地(不使用功能):

returns[, column_name]

答案 1 :(得分:0)

试试这个

returns[,x]                    # a

或获取列ID,使用哪个。

which(names(returns)==x)       # b

另一个想法是使用grep

grep("^x$", colnames(returns)) # c
grep("^x$", names(returns))    # d

答案 2 :(得分:0)

您可以根据列名使用[[列中的值。如果您在调用该函数时不想引用列的名称,则必须使用deparsesubstitute

test <- function(x) 
{ 
  xc <- deparse(substitute(x))
  returns[[xc]]
}

test(simple)