在R中,修复一个参数以使用lapply函数

时间:2015-06-25 21:19:56

标签: r

这篇文章包含两个问题。第一个是与第二个相关的一些。 首先,假设我想要定义一个接收两个参数的函数:一个数据框和一个变量(列),我想做一些计数或统计。在第一次,我必须确定变量位置。例如,假设我的两个df的第一行是

>  df
  person  age   rent
       1    23  1000
       2    35  1.500

我的功能就像这样

> myfun<- function(df, var)
  {
   # determining the variable
   ind<- which(names(df) %in% var )
   # selecting the variable 
   v <- df[,ind]

   # rest of function
   ....


  }

我认为这可能更容易......有没有办法直接确定v?

第二个问题:我有一大堆数据框(一个人口的样本)。所有数据框都具有相同的变量,其中一个变量是租金。我想计算每个样本的租金变量的平均值,我想使用lapply函数。对于一个示例,我可以执行以下代码

> mean(sample$rent , na.rm = T)

我想要的只是做这样的事情

> apply(list, mean( , variablefix = rent))

一个选项是创建一个新的mean函数,其中rent参数是fix或只有一个参数并应用lappy函数:

 >mean_rent <- function(df){...}
 >lapply(df, mean_rent)

但是,我想要一种方法直接在一行中使用apply函数

一些想法?

1 个答案:

答案 0 :(得分:1)

问题一:您还可以使用名称(即字符串)或包含名称的变量来索引data.frames(以及向量,矩阵等),所以您只需要这样做:

myfun<- function(df, var) {
   # select the column
   v <- df[,var]

   # rest of function
}

但是更常见的是在向量上定义函数然后用myfun调用它(df [,var])

问题二:除了将新函数赋值给变量外,你也可以直接传递它,即

lapply(list_of_dfs, function(df){ mean( df$rent ) })