簡體   English   中英

在R中,修復使用lapply函數的參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM