简体   繁体   English

向数据框列表中的每个 dataframe 添加新行 R

[英]Add a new row to each dataframe in a list of a dataframes R

I have a list of a dataframes, which I have calculated the colmeans for each column of each dataframe except columns 1 and 2 of the dataframes.我有一个数据框列表,我已经计算了每个 dataframe 的每一列的 colmeans,但数据框的第 1 列和第 2 列除外。 A small section of my list of dataframes is at the bottom.我的数据框列表的一小部分位于底部。

I calculated the colmeans with the line below我用下面的行计算了colmeans

df_colmeans <- lapply(df, function(x) colMeans(x[-c(1:2)],na.rm = T))

I want to add the colmeans back to each dataframe in my list of dataframes and tried the line below but ended up with a result that wasn't correct.我想将 colmeans 添加回我的数据帧列表中的每个 dataframe 并尝试下面的行,但结果不正确。

df <- rbind(df[-c(1:2)],df_colmeans)

I get the following error我收到以下错误

In rbind(df[-c(1:2)], df_colmeans): number of columns of result is not a multiple of vector length (arg 2)在 rbind(df[-c(1:2)], df_colmeans) 中:结果的列数不是向量长度的倍数(arg 2)

If there is a way to do it one step, without creating a separate variable (df_colmeans) that would be ideal.如果有一种方法可以一步完成,而无需创建一个理想的单独变量(df_colmeans)。

Any help and suggestions greatly appreciated.非常感谢任何帮助和建议。

list(Fe.II. = structure(list(Lab = c("AD", "AD", "AK", "AK", 
"AO", "AO", "BQ", "BQ", "CI", "CI", "CL", "CL", "CP", "CP", "CU", 
"CU", "CW", "CW", "CZ", "CZ", "DA", "DA", "DC", "DC", "DF", "DF", 
"EQ", "EQ", "EY", "EY", "FL", "FL", "FM", "FM", "FO", "FO", "FP", 
"FP", "FR", "FR", "GB", "GB", "GC", "GC", "GL", "GL", "GM", "GM", 
"GT", "GT", "GY", "GZ", "I", "I", "K", "K", "M", "M", "Q", "Q", 
"S", "S", "U", "U", "V", "V", "W", "W"), `Sample Prep` = c(335, 
337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 
335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 
337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 
335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 337, 337, 335, 
337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 
335, 337), `1` = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.19, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, 0.17, NA, 0.14, NA, NA, NA, NA, NA), `2` = c(NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, 0.01, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.13, NA, 0.15, NA, NA, 
NA, NA, NA), `3` = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, 0.02, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, 0.23, NA, 0.29, NA, NA, NA, NA), `4` = c(NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.02, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.22, NA, 
0.29, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA, 
-68L)), SiO2 = structure(list(Lab = c("AD", "AD", "AK", "AK", 
"AO", "AO", "BQ", "BQ", "CI", "CI", "CL", "CL", "CP", "CP", "CU", 
"CU", "CW", "CW", "CZ", "CZ", "DA", "DA", "DC", "DC", "DF", "DF", 
"EQ", "EQ", "EY", "EY", "FL", "FL", "FM", "FM", "FO", "FO", "FP", 
"FP", "FR", "FR", "GB", "GB", "GC", "GC", "GL", "GL", "GM", "GM", 
"GT", "GT", "GY", "GZ", "I", "I", "K", "K", "M", "M", "Q", "Q", 
"S", "S", "U", "U", "V", "V", "W", "W"), `Sample Prep` = c(335, 
337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 
335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 
337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 
335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 337, 337, 335, 
337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 
335, 337), `1` = c(3.65, NA, 3.595, NA, 3.645, NA, 3.66, NA, 
3.644, NA, 3.547, NA, 3.648, NA, 3.655, NA, NA, NA, 3.666, NA, 
3.686, NA, 3.674, NA, 3.667, NA, 3.59, NA, 3.63, NA, 3.689, NA, 
3.64, NA, 3.58, NA, NA, NA, 3.46, NA, 3.71, NA, 3.66, NA, 3.65, 
NA, 3.64, NA, 3.503, NA, NA, NA, 3.631, NA, 3.731, NA, 3.656, 
NA, NA, NA, 3.75, NA, 3.656, NA, 3.667, NA, 3.684, NA), `2` = c(3.6, 
NA, 3.591, NA, 3.646, NA, 3.65, NA, 3.625, NA, 3.548, NA, 3.648, 
NA, 3.643, NA, NA, NA, 3.679, NA, 3.69, NA, 3.646, NA, 3.577, 
NA, 3.6, NA, 3.63, NA, 3.692, NA, 3.66, NA, 3.59, NA, NA, NA, 
3.512, NA, 3.703, NA, 3.62, NA, 3.63, NA, 3.63, NA, 3.49, NA, 
NA, NA, 3.627, NA, 3.739, NA, 3.669, NA, NA, NA, 3.73, NA, 3.66, 
NA, 3.664, NA, 3.669, NA), `3` = c(NA, 3.55, NA, 3.662, NA, 3.665, 
NA, 3.65, NA, 3.67, NA, 3.576, NA, 3.631, NA, 3.683, NA, NA, 
NA, 3.638, NA, 3.703, NA, 3.666, NA, NA, NA, 3.59, NA, 3.61, 
NA, 3.657, NA, 3.67, NA, NA, NA, NA, NA, 3.8, NA, 3.684, NA, 
3.69, NA, 3.66, NA, 3.69, NA, 4.398, 3.672, NA, NA, 3.678, NA, 
3.769, NA, 3.678, NA, 3.718, NA, 3.75, NA, 3.636, NA, NA, NA, 
3.603), `4` = c(NA, 3.57, NA, 3.69, NA, 3.624, NA, 3.66, NA, 
3.673, NA, 3.551, NA, 3.64, NA, 3.684, NA, NA, NA, 3.678, NA, 
3.673, NA, 3.696, NA, NA, NA, 3.56, NA, 3.62, NA, 3.615, NA, 
3.66, NA, NA, NA, NA, NA, 3.642, NA, 3.684, NA, 3.67, NA, 3.67, 
NA, 3.67, NA, 4.38, 3.672, NA, NA, 3.68, NA, 3.757, NA, 3.673, 
NA, 3.759, NA, 3.78, NA, 3.64, NA, NA, NA, 3.597)), class = "data.frame", row.names = c(NA, 
-68L)), CaO = structure(list(Lab = c("AD", "AD", "AK", "AK", 
"AO", "AO", "BQ", "BQ", "CI", "CI", "CL", "CL", "CP", "CP", "CU", 
"CU", "CW", "CW", "CZ", "CZ", "DA", "DA", "DC", "DC", "DF", "DF", 
"EQ", "EQ", "EY", "EY", "FL", "FL", "FM", "FM", "FO", "FO", "FP", 
"FP", "FR", "FR", "GB", "GB", "GC", "GC", "GL", "GL", "GM", "GM", 
"GT", "GT", "GY", "GZ", "I", "I", "K", "K", "M", "M", "Q", "Q", 
"S", "S", "U", "U", "V", "V", "W", "W"), `Sample Prep` = c(335, 
337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 
335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 
337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 
335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 337, 337, 335, 
337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 335, 337, 
335, 337), `1` = c(0.04, NA, NA, NA, 0.055, NA, 0.053, NA, 0.055, 
NA, 0.021, NA, 0.049, NA, 0.052, NA, NA, NA, 0.053, NA, 0.056, 
NA, 0.054, NA, 0.036, NA, 0.032, NA, 0.06, NA, 0.053, NA, 0.05, 
NA, 0.043, NA, NA, NA, NA, NA, 0.054, NA, 0.057, NA, 0.052, NA, 
0.05, NA, 0.048, NA, NA, NA, 0.056, NA, 0.043, NA, 0.053, NA, 
NA, NA, 0.052, NA, 0.076, NA, 0.051, NA, 0.047, NA), `2` = c(0.04, 
NA, NA, NA, 0.054, NA, 0.053, NA, 0.055, NA, 0.023, NA, 0.05, 
NA, 0.05, NA, NA, NA, 0.051, NA, 0.053, NA, 0.056, NA, 0.036, 
NA, 0.032, NA, 0.06, NA, 0.053, NA, 0.05, NA, 0.043, NA, NA, 
NA, NA, NA, 0.056, NA, 0.056, NA, 0.057, NA, 0.05, NA, 0.05, 
NA, NA, NA, 0.053, NA, 0.043, NA, 0.053, NA, NA, NA, 0.052, NA, 
0.076, NA, 0.051, NA, 0.047, NA), `3` = c(NA, 0.04, NA, NA, NA, 
0.055, NA, 0.053, NA, 0.057, NA, 0.023, NA, 0.05, NA, 0.055, 
NA, NA, NA, 0.053, NA, 0.053, NA, 0.054, NA, NA, NA, 0.045, NA, 
0.06, NA, 0.052, NA, 0.05, NA, NA, NA, NA, NA, 0.05, NA, 0.054, 
NA, 0.056, NA, 0.054, NA, 0.05, NA, 0.054, 0.057, NA, NA, 0.057, 
NA, 0.053, NA, 0.054, NA, 0.052, NA, 0.05, NA, 0.045, NA, NA, 
NA, 0.051), `4` = c(NA, 0.04, NA, NA, NA, 0.054, NA, 0.053, NA, 
0.056, NA, 0.019, NA, 0.052, NA, 0.056, NA, NA, NA, 0.051, NA, 
0.051, NA, 0.056, NA, NA, NA, 0.047, NA, 0.06, NA, 0.046, NA, 
0.05, NA, NA, NA, NA, NA, 0.05, NA, 0.054, NA, 0.055, NA, 0.054, 
NA, 0.05, NA, 0.052, 0.056, NA, NA, 0.055, NA, 0.053, NA, 0.053, 
NA, 0.051, NA, 0.052, NA, 0.046, NA, NA, NA, 0.051)), class = "data.frame", row.names = c(NA, 
-68L)))

Do you want to add the column mean as a new row to the existing dataframe?是否要将列均值作为新行添加到现有 dataframe 中?

Try:尝试:

result <- lapply(df, function(x) rbind(x[-c(1:2)], colMeans(x[-c(1:2)],na.rm = TRUE)))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将数据帧的每一行转换为R中的新列表 - Convert each row of dataframe to new list in R 将列转置为数据帧列表中的行并将其写入 R 中的新 dataframe - transpose a columns to row in a list of dataframes and write it to a new dataframe in R 数据框列表-从每个数据框提取一行 - List of dataframes - extracting a row from each dataframe R:将列表中每个数据帧的行重新组织为新数据帧的新列表 - R: Reorganizing rows of each dataframe within a list into a new list of new dataframes 将列表添加到数据框的每一行 - Add list to each row in a dataframe 在使用ldpy之前/之后将数据帧的每一行添加标识符以将数据帧列表合并为一个 - add identifier to each row of dataframe before/after use ldpy to combine list of dataframes into one 将数据帧附加到 r 中数据帧列表中每个数据帧的末尾 - Append dataframe to end of each dataframe in a list of dataframes in r R-数据框列表-计算并添加新行 - R - list of dataframes - calculate and add new rows 为数据框列表 R 中的每个 dataframe 中的每个列名添加前缀 - Adding a prefix to each column name in each dataframe in a list of dataframes R 如何将 dataframe 变量名称移动到第一行并将新变量名称添加到列表中的多个数据框? - How to move dataframe variable names to first row and add new variable names to multiple dataframes in a list?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM