为 return 列创建一个函数

Creating a function to return a column

我需要创建一个函数来 return 作为参数提供给函数的列。例如

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

所以如果我使用 fun (columnnamethatexists) 它将 return dataframe$columnnamethatexists

目前,它所做的是 return dataframe$parameter 不存在,无论我输入什么。

对不起,一个愚蠢的问题可能是复制品,但我找不到它。

谢谢!

我认为 df 也应该是你的函数的一个参数。这个解决方案总是return列的形式为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
...

您也可以使用 tidyeval,在 rlangdplyr 中使用:

library(rlang)
library(dplyr)

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

fun(iris, Sepal.Length)

最佳,

科林

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