我已经阅读了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

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