这篇文章包含两个问题。第一个是与第二个相关的一些。 首先,假设我想要定义一个接收两个参数的函数:一个数据框和一个变量(列),我想做一些计数或统计。在第一次,我必须确定变量位置。例如,假设我的两个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函数
一些想法?
答案 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 ) })