【发布时间】:2021-09-09 13:33:34
【问题描述】:
我有一个数据框列表,下面是一小部分
list(Al2O3 = structure(list(Determination_No = c(1, 2, 3, 4,
5, 6, 7, 8, 9, 10), `2` = c(2.04, 2.07, 2.05, 2.07, 2.1, 2.08,
NA, NA, NA, NA), `3` = c(2.08, 2.1, 2.08, 2.13, 2.1, 2.08, NA,
NA, NA, NA), `4` = c(2.08, 2.08, 2.09, 2.06, 2.08, 2.07, 2.07,
2.06, 2.08, 2.08), `5` = c(2.11, 2.09, 2.1, 2.08, 2.09, 2.09,
NA, NA, NA, NA), `6` = c(2.12, 2.1, 2.1, 2.11, 2.1, 2.11, NA,
NA, NA, NA), `7` = c(2.06, 2.05, 2.04, 2.05, 2.04, 2.03, NA,
NA, NA, NA), `8` = c(2.078, 2.065, 2.057, 2.063, 2.067, 2.066,
NA, NA, NA, NA), `10` = c(2.191776681, 2.153987428, 2.153987428,
2.097303548, 2.116198175, 2.116198175, NA, NA, NA, NA), `12` = c(2.24,
2.08, 2.12, 2.15, 2.15, 2.15, NA, NA, NA, NA), `36` = c(2.07,
2.082, 2.048, 2.046, 2.086, 2.069, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-10L)), As = structure(list(Determination_No = c(1, 2, 3, 4,
5, 6, 7, 8, 9, 10), `2` = c(0.002, 0.001, 0.001, 0.001, 0.002,
0.001, NA, NA, NA, NA), `3` = c(0.003, 0.002, 0.002, 0.002, 0.001,
0.002, NA, NA, NA, NA), `4` = c(0.001, 0.002, 0.001, 0.002, 0.002,
0.002, 0.001, 0.002, 0.002, 0.003), `5` = c(0.002, 0.001, 0.001,
0.001, 0.001, 0.002, NA, NA, NA, NA), `6` = c(NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_), `7` = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `8` = c(NA,
0.001, NA, NA, NA, NA, NA, NA, NA, NA), `10` = c(NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_), `12` = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `36` = c(0.0053,
0.0053, 0.0053, 0.00454, 0.0053, 0.0053, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-10L)), Ba = structure(list(Determination_No = c(1, 2, 3, 4,
5, 6, 7, 8, 9, 10), `2` = c(NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_),
`3` = c(NA, NA, NA, NA, 0.001, NA, NA, NA, NA, NA), `4` = c(0.004,
0.003, 0.003, 0.004, 0.003, 0.002, 0.004, 0.002, 0.005, NA
), `5` = c(NA, NA, NA, NA, NA, 0.003, NA, NA, NA, NA), `6` = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_), `7` = c(NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_), `8` = c(0.002, 0.003, NA, NA, NA, 0.002,
NA, NA, NA, NA), `10` = c(NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
), `12` = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `36` = c(0.00089566,
0.00089566, 0.00089566, 0.00089566, 0.00089566, 0.00089566,
NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-10L)))
我有以下函数来控制应用某些舍入规则
AnalyteDecList <- c("Al2O3", "As", "Ba")
decimlist <- data.frame(analytes = AnalyteDecList,
value.dec = c(2,3,3),
sd.Dec = c(3,4,4))
dataDecimal <- function(x,value.dec,...){
x <- format(round(x,digits = value.dec),nsmall = value.dec)
return(x)
}
df <- Map(dataDecimal, df [decimlist$analytes], decimlist$value.dec)
这会产生我想要的结果,但是,它还将舍入函数应用于数据帧列表中每个数据帧的第一列,这不是必需的。如何让我的函数排除每个数据框中的第一列?
谢谢
【问题讨论】: