代码之家  ›  专栏  ›  技术社区  ›  user59419

对列表中的数据帧列应用一些函数

  •  1
  • user59419  · 技术社区  · 5 年前

    我知道我们可以使用apply或lapply来做for循环在r中可以做的事情。 apply (dataframe,2,mean) 但是,要计算列的平均值,如果我们有数据帧列表,我需要通过删除第一列并将数据帧转换为数值来进行以下调整。 假设dataframe的列表是list,其中list[[1]]是第一个dataframe。

    如何使用数据帧列表上的lapply同时执行上述操作。如何使用lapply对列表中的数据帧执行操作,因为

    lapply(LIST, function (x) some function)
    

    将操作应用于列表而不是数据帧。下面是没有任何意义的:

    lapply(LIST[], function (x) some function) 
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   akrun    5 年前

    我们可以循环通过 list ,通过删除第一列来对数据集的列进行子集,循环该子集,转换为 numeric ,将输出分配给数据集,并返回该数据集

    lapply(LIST, function(x) {x[-1] <- lapply(x[-1], as.numeric); x[-1]})
    

    或者另一个选择是

    lapply(LIST, function(x) data.frame(lapply(x[-1], as.numeric)))
    

    另外,如果需要根据类型进行转换,一个更简单的选项是 type.convert 可以应用于 data.frame S公司

    lapply(LIST, type.convert)
    

    或使用 tidyverse

    library(dplyr)
    library(purrr)
    map(LIST, ~ .x %>%
                   transmute_at(-1, as.numeric))