我需要创建一个函数来返回作为参数赋予函数的列。例如
fun = function (parameter) {
result = get(paste0("dataframe","parameter"))
return(result) }
因此,如果我使用fun (columnnamethatexists)
,则会返回dataframe$columnnamethatexists
目前,它所做的是返回dataframe $参数不存在,无论我输入什么。
抱歉这个愚蠢的Q可能是一个复制品,但我找不到它。
谢谢!
答案 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
...
您也可以使用tidyeval
,rlang
和dplyr
来执行此操作:
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