如何在一个包含不同行数的大型数据框列表中使用lapply和我自己的函数?

时间:2016-09-20 18:54:31

标签: r dataframe lapply

我使用

读取了25个.xlsx文件
mydata = lapply(filenames, read.xlsx, 1, sheetName = "Sheet1", startRow = 47, header = FALSE, row.names = NULL)

这长长的数据框列表中的每个元素都有不同的行数 然后我定义了自己的函数,它应该根据每个数据框中的值为每个数据框添加三个新列。

add.columns = function(df){
    transform(df, Tot.count = ave(df$X4, df$X1, FUN = sum))
    Tot.sum = sum(df$X4)
    df$Tot.sum = c(Tot.sum) 
    transform(df, percentage = 100 * df$Tot.count/Tot.sum)}

然后我想使用lapply在每个数据框上运行我的函数。我试过了

transformed.data = lapply(mydata, FUN = add.columns(mydata))

由于我的数据框有不同的行数,这给了我一个错误。

    Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  arguments imply differing number of rows: 114, 121, 147, 124, 112, 122, 119, 129, 115, 116, 141, 87, 92, 73, 74, 120, 133, 125, 126, 138, 134 

我已经找到了一种方法来使这个工作,但我找到的适用于相等行长的数据帧。我需要做些什么才能使用我的数据框?

0 个答案:

没有答案