zoukankan      html  css  js  c++  java
  • R apply()函数

    创建一个列表变量,它的第一个元素包含所有从0到9的平方数,第二个元素为10到19之内的所有平方数,依此类推,最后一个元素为90到99之内的平方数。没有平方数的元素也应该被包含在内!

    学习网友的解题思路,用的是apply()函数。

    学习 apply() 函数:

    1.apply函数的使用方法:

    apply(X, MARGIN, FUN)
    Here:
    -x: 一个数组或者矩阵
    -MARGIN: 两种数值1或者2决定对哪一个维度进行函数计算
    -MARGIN=1`: 操作基于行
    -MARGIN=2`: 操作基于列
    -MARGIN=c(1,2)`: 对行和列都进行操作
    -FUN: 使用哪种操作,内置的函数有mean(平均值)、medium(中位数)、sum(求和)、min(最小值)、max(最大值),当然还包括广大的用户自定义函数
    

    2.解题

    > m1 = matrix(0:99,nrow = 10,ncol = 10,byrow = T)
    > m1
          [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
     [1,]    0    1    2    3    4    5    6    7    8     9
     [2,]   10   11   12   13   14   15   16   17   18    19
     [3,]   20   21   22   23   24   25   26   27   28    29
     [4,]   30   31   32   33   34   35   36   37   38    39
     [5,]   40   41   42   43   44   45   46   47   48    49
     [6,]   50   51   52   53   54   55   56   57   58    59
     [7,]   60   61   62   63   64   65   66   67   68    69
     [8,]   70   71   72   73   74   75   76   77   78    79
     [9,]   80   81   82   83   84   85   86   87   88    89
    [10,]   90   91   92   93   94   95   96   97   98    99
    > list =  apply(
    +   m1,MARGIN = 1,
    +   function(m1)
    +   {
    +     m1[round(sqrt(m1))^2==m1]
    +   })
    > list
    [[1]]
    [1] 0 1 4 9
    
    [[2]]
    [1] 16
    
    [[3]]
    [1] 25
    
    [[4]]
    [1] 36
    
    [[5]]
    [1] 49
    
    [[6]]
    integer(0)
    
    [[7]]
    [1] 64
    
    [[8]]
    integer(0)
    
    [[9]]
    [1] 81
    
    [[10]]
    integer(0)
    

     round()是四舍五入函数:

    > x = seq(1,20,3)
    > x = sqrt(x)
    > x
    [1] 1.00000 2.00000 2.64575 3.16228 3.60555 4.00000
    [7] 4.35890
    > round(x)
    [1] 1 2 3 3 4 4 4
    

    3. 实例:计算这每行数据y值的样本方差

    library(readxl)
    data = read.csv("5.13.csv")
    list = apply(data[,5:7],1,sample_var)
    list
    

      

    参考:https://www.jianshu.com/p/8e04245bfe6d;<---更多变形函数:lapply,sapply,tapply,

  • 相关阅读:
    BZOJ 3677: [Apio2014]连珠线 树形DP
    TweenMax说明
    vs 中快捷实现父类方法
    Box2d b2World的RayCast方法
    cocos2d-js 帧序列动画
    cocos2d-js 显示帧序列图中的一帧
    不同类型刚体接触测试
    FlashDevelop调试Air出错
    php 创建删除数据库
    本地php 连接 MySQL
  • 原文地址:https://www.cnblogs.com/jiaxinwei/p/11517345.html
Copyright © 2011-2022 走看看