r - 将轮函数应用于数据帧中的每个元素

标签 r loops

假设我在 R 中有一个像这样的数据框

x = c(2, 3.432, 5)
y = c(4.5345, NA, "text")
z = c(8.13451, 3.12451, 6.12341)
A = data.frame(x, y, z)

如何将轮函数应用于数据帧的适当元素?
基本上我想:
  • 检查元素是否为数字
  • 如果不是,则不做任何更改
  • 如果是数字,则将其四舍五入到小数点后 3 位

  • 我在很多地方都读到循环在 R 中不是一个好主意。
    A$y[is.numeric(A$y)] <- round(A$y, digits = 3)
    

    不起作用

    最佳答案

    我们可以试试 lapply

    A[] <- lapply(A, function(x) if(is.numeric(x)) round(x, 3) else x)
    

    如果我们需要更改 character/factor 中数字元素的格式类列也是
    A[] <- lapply(A, function(x) {
               x1 <- type.convert(as.character(x), as.is=TRUE)
        ifelse(grepl("^[0-9.]+$", x1), round(as.numeric(x1), 3), x1)})
    

    关于r - 将轮函数应用于数据帧中的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41517987/

    相关文章:

    r - Rcpp 中的 Kaiser 聚类系数

    r - 根据 CI 输出制作表格

    java - JSF-c :forEach Not Working On Recursive Method

    bash - 有没有更好的方法在 bash 中运行 N 次命令?

    c# - 使用循环转换此 linq 表达式

    r - 混合效应逻辑回归 : different results with MASS and lme4

    c++ - 尝试使用外部库时 undefined reference

    r - 将 data.table 列快速连接为一个字符串列

    javascript - AngularJS 嵌套 ul 列表和 ng-repeat

    PHP 从 URL 中获取 CSV,加载到数组中,格式化