在R中的for循环内应用trimws()时出错

阿尔瓦罗·马丁内斯

我正在尝试对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

还有其他方法可以应用此功能吗?

阿克伦

通过遍历listwith lapply,然后按列应用trimwswith lapplytrimws向量化),我们可以使其更简单

df_list1 <- lapply(df_list, function(dat) {
                 dat[] <- lapply(dat, trimws)
                dat
         })

通过这样做的j in iz in j,它被假定lengthlist是相同的,因为每个数据集的行的列的数目和数量,这可能不是这种情况,从而导致在标出界错误。

基于下面的例子中的数据,则length是10位,但nrowncol小于,这导致错误标

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章