[英]in R, fix an argument for use the lapply function
這篇文章包含兩個問題。 第一個與第二個有關。 首先,假設我想定義一個接收兩個參數的函數:一個數據框和一個變量(列),並且我想進行一些計數或統計。 第一次,我必須確定可變位置。 例如,假設我的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))
一種選擇是創建一個新的均值函數,其租金參數為fix或僅一個參數,然后應用lappy函數:
>mean_rent <- function(df){...}
>lapply(df, mean_rent)
但是,我想要一種僅在一行中直接使用apply函數的方法
有什么想法嗎?
問題一:您還可以使用名稱(即字符串)或包含名稱的變量來索引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 ) })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.