如何使用参数x,y编写一个函数(),它只返回x列中== y的值

时间:2016-01-21 21:58:21

标签: r

我有一个数据框:

df <- data.frame( a = 1:5, b = 1:5, c = 1:5, d = as.factor(1:5))

我想编写一个函数,将a,b或c列中的一个作为参数,并列为d列的一个因子,并仅返回列a,b或c的值,列d的因子值。

我尝试了以下代码:

fun1 <- function(x,y) {
      u <- x[data$d == "y"]
       return(u)
   }

我不断回复numeric(0)作为函数的输出。当我在function()环境之外尝试类似的代码时,它似乎工作正常。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

可能是重复但我不知道如何在带有标签的项目的大海捞针中找到它:data.frameindexingcolumnsvalues。最佳做法是传递“数据”以及搜索词。 (调用对象df1而不是df。)

 fun1 <- function(dfrm, col,val) {
       u <- dfrm[dfrm$d == val , col]
        return(u)
    }
fun1(df1, 'b', 3)
#[1] 3