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