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