创建函数以返回列

时间:2017-07-21 14:42:36

标签: r plyr sumifs mutate

我需要创建一个函数来返回作为参数赋予函数的列。例如

fun = function (parameter) {
result = get(paste0("dataframe","parameter"))
return(result) }

因此,如果我使用fun (columnnamethatexists),则会返回dataframe$columnnamethatexists

目前,它所做的是返回dataframe $参数不存在,无论我输入什么。

抱歉这个愚蠢的Q可能是一个复制品,但我找不到它。

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为df也应该是你函数的一个参数。此解决方案始终以data.frame的形式返回列。

所以:

fun <- function(df, col){
  df[col]
}
fun(iris, "Sepal.Length")
    Sepal.Length
1            5.1
2            4.9
3            4.7
4            4.6
5            5.0
6            5.4
7            4.6
8            5.0
...

您也可以使用tidyevalrlangdplyr来执行此操作:

library(rlang)
library(dplyr)

fun <- function(df, col){
  col <- enquo(col)
  df %>% select(!!col)
}

fun(iris, Sepal.Length)

最好,

科林

答案 1 :(得分:0)

dataframe <- data.frame(a = 1:10, b = LETTERS[1:10])

fun <- function(val) {
  dataframe[, val]
}

fun("a")
#  [1]  1  2  3  4  5  6  7  8  9 10
fun("b")
#  [1] A B C D E F G H I J
# Levels: A B C D E F G H I J