为 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
,在 rlang
和 dplyr
中使用:
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
我需要创建一个函数来 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
,在 rlang
和 dplyr
中使用:
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