我正在尝试对trimws()
R中的df列表中包含的每个df的每一列的每一行应用函数。
这是我的代码:
for(i in 1:length(df_list)){
for (j in i) {
for(z in j){
df_list[[i]][[j]][[z]] <-
trimws(df_list[[i]][[j]][[z]])
}
}
}
控制台输出:
Error in .subset2(x, i, exact = exact) : subscript out of bounds
还有其他方法可以应用此功能吗?
通过遍历list
with lapply
,然后按列应用trimws
with lapply
(trimws
向量化),我们可以使其更简单
df_list1 <- lapply(df_list, function(dat) {
dat[] <- lapply(dat, trimws)
dat
})
通过这样做的j in i
和z in j
,它被假定length
的list
是相同的,因为每个数据集的行的列的数目和数量,这可能不是这种情况,从而导致在标出界错误。
基于下面的例子中的数据,则length
是10位,但nrow
和ncol
小于,这导致错误标
for(i in 1:length(df_list)){
for (j in i) {
for(z in j){
df_list[[i]][[j]][[z]] <-
trimws(df_list[[i]][[j]][[z]])
}
}
}
.subset2(x,i,精确=精确)中的错误:下标超出范围
df_list <- list(structure(list(col1 = c("a ", "b", "c "), col2 = c("b ",
"d", "f")), class = "data.frame", row.names = c(NA, -3L)), structure(list(
col1 = c("a ", "b", "c ", "d"), col2 = c("b ", "d", "f",
"g "), col3 = c(" f", "d", "m ", "c")), class = "data.frame", row.names = c(NA,
-4L)), structure(list(col1 = c("a ", "b", "c "), col2 = c("b ",
"d", "f")), class = "data.frame", row.names = c(NA, -3L)), structure(list(
col1 = c("a ", "b", "c ", "d"), col2 = c("b ", "d", "f",
"g "), col3 = c(" f", "d", "m ", "c")), class = "data.frame", row.names = c(NA,
-4L)), structure(list(col1 = c("a ", "b", "c "), col2 = c("b ",
"d", "f")), class = "data.frame", row.names = c(NA, -3L)), structure(list(
col1 = c("a ", "b", "c ", "d"), col2 = c("b ", "d", "f",
"g "), col3 = c(" f", "d", "m ", "c")), class = "data.frame", row.names = c(NA,
-4L)), structure(list(col1 = c("a ", "b", "c "), col2 = c("b ",
"d", "f")), class = "data.frame", row.names = c(NA, -3L)), structure(list(
col1 = c("a ", "b", "c ", "d"), col2 = c("b ", "d", "f",
"g "), col3 = c(" f", "d", "m ", "c")), class = "data.frame", row.names = c(NA,
-4L)), structure(list(col1 = c("a ", "b", "c "), col2 = c("b ",
"d", "f")), class = "data.frame", row.names = c(NA, -3L)), structure(list(
col1 = c("a ", "b", "c ", "d"), col2 = c("b ", "d", "f",
"g "), col3 = c(" f", "d", "m ", "c")), class = "data.frame", row.names = c(NA,
-4L)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句