精华内容
下载资源
问答
  • JavaScript常见变量和函数命名示例

    万次阅读 2020-07-21 15:16:17
    JavaScript作为前端开发从业人员必须...通过按JavaScript的数据类型分类着手、细到一个函数的参数命名,并提供众多可选方案,并尽量给出其适用范围和利弊。 JavaScript常见变量和函数命名示例思维导图 需要注意的是由

    JavaScript作为前端开发从业人员必须掌握的3大基础知识中最重要的一环,也是平是接触时间最长、写得最多的。在开发过程中必然会遇到命名的问题,你会词穷、纠结、惆怅吗?本文的出现相信能够解决大部分烦恼,让你轻松写出符合规范、易读、简短的代码。

    本文将通过大量的实例来试图自圆其说,形成一套系统化、实用的变量命名理化体系。通过按JavaScript的数据类型分类着手、细到一个函数的参数命名,并提供众多可选方案,并尽量给出其适用范围和利弊。

    JavaScript常见变量和函数命名示例思维导图
    JavaScript常见变量和函数命名示例思维导图

    需要注意的是由于个人写作水平、和知识有限,很多方面叙述上有些生硬,在分类上也没有什么特别的依据,文章也没有人审稿,所以有什么纰漏还请留言告知。由于写作仓促,内容可能不全,后续会随着工作和学习的深入而不断地调整和更新。

    布尔值(Boolean)命名

    Boolean值是两种逻辑状态的变量,它包含两个值:。在JavaScript中对应 truefalse,在实践中通常使用数字1表示真值,0来表示假值。

    虽然Boolean的状态只有两种但是在命名时可以进一步分类,这里给出几种场景:

    场景一:表示可见性、进行中的状态

    解释可见性在通常指页面中的元素、组件是否显示(或者组件挂载到DOM上,但并不可见)。进行中主要是说明某种状态是处于持续进行中。

    推荐命名方式为 is + 动词(现在进行时)/形容词,同时这种方式也可以直接不写 is,但是为了更好的作区分,建议还是加上。

    {
      isShow: '是否显示',
      isVisible: '是否可见',
      isLoading: '是否处于加载中',
      isConnecting: '是否处于连接中',
      isValidating: '正在验证中',
      isRunning: '正在运行中',
      isListening: '正在监听中'
    }
    

    注意: 在Java中使用这种方式是有一定副作用的,为什么请移步:为什么阿里巴巴禁止开发人员使用 “isSuccess” 作为变量名?

    场景二:属性状态类

    解释:通常用来描述实体(例如:HTML标签、组件、对象)的功能属性,而且定法比较固定。

    {
      disabled: '是否禁用',
      editable: '是否可编辑',
      clearable: '是否可清除',
      readonly: '只读',
      expandable: '是否可展开',
      checked: '是否选中',
      enumberable: '是否可枚举',
      iterable: '是否可迭代',
      clickable: '是否可点击',
      draggable: '是否可拖拽'
    }
    

    场景三:配置类、选项类

    解释:主要是指组件功能的开启与关闭,功能属性的配置。

    这是一种比较常见的情景,目前命名方式也有很多种,但是归纳起来也不多。推荐使用 withXx 来表示组件在基本功能形态外的其它功能,比如组件的基础功能到高级功能的开启;使用 enableXx 来表示组件某些功能的开启;使用 allowXx 来表示功能属性的配置;使用 noXx 用于建议功能使用者这个不建议开启。

    {
      withTab: '是否带选项卡',
      withoutTab: '不带选项卡',
      enableFilter: '开启过滤',
      allownCustomScale: '允许自定义缩放',
      shouldClear: '是否清除',
      canSelectItem: '是否能选中元素',
      noColon: '不显示label后面的冒号',
      checkJs: '检查Js',
      emitBOM: 'Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.'
    }
    

    注意:如果嫌分类太多,可以只使用其中一种方式,比如在Typescript中使用了 allownXxnoXx

    除了上面这些带有特定的前置介词、动词方式外还有一些在语义上带有疑问性质的组合通常也是作为Boolean命名的一种参考。

    {
      virtualScroll: '是否启用虚拟滚动模式',
      unlinkPanels: '在范围选择器里取消两个日期面板之间的联动',
      validateEvent: '输入时是否触发表单的校验'
    }
    

    函数命名

    函数在不同的上下文中的叫法也不一样,在对象中称为方法,在类中有构造函数、在异步处理时有回调函数,还有立即执行函数、箭头函数、柯里函数等。

    函数命名的方式常常是和业务逻辑耦合在一起的,但是在命名规则上也有一些常见的模式可以遵循。

    场景一:事件处理

    事件处理函数是前端平时用到最多的,包括浏览器原生事件、异步事件和组件自定义事件。在写法上最常见的两种命名分别为 onXxonXxClickhandleXxhandleXxChange

    这里如何在二者之间选择,可以从二方面来归类。一是,原生事件采用 onXx,而自定义事件使用handleXx。二是,事件主动监听采用 onXx,被动处理使用 handleXx

    从实践及三大主流框架的文档关于事件部分的内容来看,推荐使用 handleXx 这种方式,而在表单提交的时候通常采用 onSubmit 函数。

    其实,在实际项目中很少严格这样来命名事件处理函数,因为这种方式有一定的局限性,比如点击按钮打开一个对话框,使用 handleOpenDlgonOpenDlg 都没有直接写 openDlg 方便,如果页面有多个不同功能的对话框采用这种方式会显得变量名过长,而handle和on就显得没有必要了,比如hanldeOpenCommentDlg 就没有 openCommentDlg 直白。

    下面列出了一些约定成俗的适用例子:

    {
      onSubmit: '提交表单',
      handleSizeChange: '处理分页页数改变',
      handlePageChange: '处理分页每页大小改变',
      onKeydown: '按下键'
    }
    

    场景二:异步处理

    这里主要是指在写数据层服务、状态管理中的Action命名,以及Ajax回调的命名规则。

    {
      getUsers: '获取用户列表',
      fetchToken: '取得Token',
      deleteUser: '删除用户',
      removeTag: '移除标签',
      updateUsrInfo: '更新用户信息',
      addUsr: '添加用户',
      createAccount: '创建账户'
    }
    

    命名主要围绕数据的增删查找来划分,获取数据通常是 getXxfetchXx,在作者看来两者在使用上的区分在于 getXx 的数据来源不一定直接取自异步的原始数据,可能是加工处理后的,而 fetchXx 是直接拿的原始数据。当然在实际项目中并没有区分,看个人喜好。

    deleteXx 主要用于数据删除,而 removeXx 在语义上是移除数据,通常情况数据是还存在的,只是没有显示或数据假删除。updateXx 是指数据更新操作,addXx 是在已有列表数据中添加新的子项、而createXx主要是创建新的实例,比如新建一个账户。

    场景三: 跳转路由

    在实际开发过种中,比如在使用react-router/vue-router时,在模板或者JSX中可以直接在标签中写上目标地址,但有些时候跳转的目标地址是经过判断或者组合后的,并且通过事件触发跳转的,这个时候就需要一个函数来处理,那么在函数命名的时候可以考虑使用

    {
      toTplDetail: '跳转到模板详情页面',
      navigateToHome: '导航到首页',
      jumpHome: '跳转首页',
      goHome: '跳转首页',
      redirectToLogin: '重定向到登录页',
      switchTab: '切换Tab选项卡',
      backHome: '回到主页'
    }
    

    推荐使用 toXxgoXx 这两种方式,如果不是在当前页面打开/跳转页面,可以使用 toBlankTplDetail 或者 goBlankHome 这种方式来进一步语义化。如果前端页面是位于Webview中,也可以考虑采用toNativeShare 这种方式来命名。

    场景四:框架相关特定方法

    这里主要是针对前端3大主流流行框架,有一些命名是带有特定标识符的,还有就是一些生命周期的命名方式。

    {
      formatTimeFilter: '在AngularJs和Vue中,通常用于过滤器命名',
      storeCtrl: '用于AngularJs定义控制器方法',
      formatPipe: '用于Angular中,标识管道方法',
      $emit: 'Vue中的实例方法',
      $$formatters: 'AngularJs中的内置方法',
      beforeCreate: 'Vue的生命周期命名',
      componentWillMount: 'React生命周期命名',
      componentDidMount: 'React生命周期命名',
      afterContentInit: 'Anuglar生命周期命名',
      afterViewChecked: 'Angula生命周期命名',
      httpProvider: 'AngularJs服务',
      userFactory: '工厂函数',
      useCallback: 'React钩子函数'
    }
    

    场景五:数据的加工

    这类场景在处理列表的时候经常会碰到,比如排序、过滤、添加额外的字段、根据ID和索引获取特定数据等。

    情形一:根据特定属性获取属性

    这里可以参考DOM方法的命名,比如:getElememtById()getElementsByTagName()getElementsByClassName()getElementsByName(),然后提炼出一个比较实用的模板:getXxByYy()。其中 Xx 可以是:element, item, option, data, selection,list, options 以及一些特定上下文的名字,比如:user(s), menu(s) 等。Yy 相对来说比较固定,经常用到的就是 id, index, key, value, selected, actived 等。

    除了使用 get,还可以使用 queryfetch,但是需要注意和上面提到的异步数据处理作一个区分。

    {
      getItemById: '根据ID获取数据元素',
      getItemsBySelected: '根据传入的已选列表ID来获取列表全部数据',
      queryUserByUid: '根据UID查询用户'
    }
    

    注意:在 getItemsBySelected 这种情形下直接写成 getItemsSelected 更好,但只适用于 Yy 为形容词的场景

    情形二:格式化数据

    这里的格式化操作包括排序、调整数据结构、过滤数据、添加属性。命名通常使用 formatXx, convertXx,inverseXx, toggleXx, parseXx, flatXx, 也可以结合数组的一些操作方法来命名,比如 sliceXx, substrXx,spliceXx, sortXx, joinXx 等来命名。

    {
      formatDate: '格式化日期',
      convertCurrency: '转换货币单位',
      inverseList: '反转数据列表',
      toggleAllSelected: '切换所有已选择数据状态',
      parseXml: '解析XML数据',
      flatSelect: '展开选择数据',
      sortByDesc: '按降序排序'
    }
    

    数组命名

    数组的命名推荐使用复数形式来命名,还有就是名词和具有列表意思的单词组合。常见的词汇有options, list, maps, nodes, entities, collection 等。

    {
      users: '用户列表',
      userList: '用户列表',
      tabOptions: '选项卡选项',
      stateMaps: '状态映射表',
      selectedNodes: '选中的节点',
      btnGroup: '按钮组',
      userEntities: '用户实体'
    }
    

    选项元素、下拉元素命名

    主要针对的是在下拉选择框、选项卡元素、Radio、Checkbox等数据源每个选项数据的命名。常见的词汇有:title, name, key, label, field, value, id, children, index, nodes 等。

    基中 title/name/key/label/field 作为选项显示名, value/id 用于唯一标识选项,children/nodes 用于包含子节点内容。如果选项元素的语义很明确的情况下也可以直接使用特定单词来代替提到的这些泛指的词汇,例如菜单列表就可以使用 menu 来作为显示名。

    // 最常见组合
    {
      title: '标题',
      value: 'ID值'
    }
    
    // 组合二
    {
      label: '标签名',
      value: 'ID值'
    }
    
    // 组合三
    {
      name: '元素名',
      id: 'ID值'
    }
    
    // 组合四
    {
      field: '字段',
      value: '标识',
      index: '索引'
    }
    

    当前选项、激活项命名

    适用列表的选中项、菜单选中项、步骤操作的当前进行步骤、页面路由当前路由等的命名。

    {
      activeTab: '当前选中选项卡',
      currentPage: '当前页',
      selectedData: '当前选项中数据',
    }
    

    临时数据、比对数据命名

    针对在代码中有时会使用一些临时的变量来存储数据、保存数据快照的场景下的命名。

    {
      swapData: '临时交换数据',
      tempData: '临时数据',
      dataSnapshot: '数据快照'
    }
    

    数据循环语句中变量命名

    在使用 for 循环时,多层嵌套请依次使用 i/j/k,超过3层可以使用 x/y/zm/n 来命名。使用 forEach,map, filter 等方法时,每一个元素命名可以根据不同语境下的特殊名字来命名,比如遍历 menus,那么每个元素可以命名为 menu,不然则使用上下文无关的词汇,比如:item, option, data, key, object 等。至于索引通常使用 index,如果多层可以使用 index + 数字 的形式,也可以直接使用 i/j/k 来作为索引,甚至还可以使用 subIndex/grandIndex 这种方式来命名。

    对于在使用 for 循环时数组长度如果需要单独命名的话,可以使用 xxlength/xxLens,或者 xxCount

    在循环的过程中通常还会统计某个条件下数据匹配的次数、重复元素数量、记录中间结果等情况。这里推荐使用 count 表示次数,skipped 表示跳过的数量,result 表示结果。

    // for 循环
    for (let i = 0; i < 10; i++) {
      for (let j = 0; j < 10; j++) {
        for (let k = 0; k < 10; k++) {
          // do something
        }
      }
    }
    
    for (let i = 0, lens = this.options.length; i < lens; i++) {
      // do something
    }
    
    // forEach
    users.forEach((item, index) => {
      // do something
    })
    
    menus.forEach((menu, index) => {
      if (menu.children) {
        menu.children.forEach((subMenu, subIndex) => {
          if (subMenu.children) {
            subMenu.children.forEach((grandMenu, grandIndex) => {
              // 一个不常用的示例
            })
          }
        })
      }
    })
    

    方法参数命名

    方法的参数名称和数量在不同的方法中各不相同,但是还是有一些固定的模式可以参考,比如在Vue中监听属性变化的新值和旧值;reduce 方法的上一个值,当前值;回调函数的命名、剩余参数的命名等。

    情形一:新值、旧值

    常见于Vue中watch 对像中的属性监听回调函数,推荐使用

    {
      oldVal: '旧值',
      newVal: '新值'
    }
    

    情形二:上一个值、下一个值和当前值

    这种情形见于路由的钩子方法,Object.assign 数据拷贝的参数。

    // 组合一
    {
      from: '从...',
      to: '到...'
    }
    
    // 组合二
    {
      prev: '上一个...',
      next: '下一个...',
      cur: '当前'
    }
    
    // 组合三
    {
      source: '源',
      target: '目标'
    }
    
    // 组合四
    {
      start: '开始',
      end: '结束'
    }
    

    情形三:异步数据返回

    用于Promise的then方法参数,await 的返回的Promise等。可选择的词汇有:res, data, json, entity,推荐使用 res

    demoPromise.then(res => {
      // do something
    })
    

    情形四:其它情况

    一些使用不多,但是在编程时约定成俗的命名方式。例如 ch 表示单个字符,str 表示字符串, n 代表次数, reg 表示正则, expr 表示表达式, lens 表示数组长度, count 表示数量, p 表示数据的精度, q 表示查询(query), src 表示数据源(source), no 表示数字(number), rate 表示比率, status 表示状态, bool 表示布尔值, arr 表示数组值, obj 表示对象值, xy 表示坐标两轴, func 表示函数, ua表示User Agent, size 表示大小, unit 表示单位, hoz 表示水平方向, vert 表示垂直方向, radix 表示基数,根

    // 传入单个字符
    function upper(ch) {}
    
    // 数量重复
    function repeat(str, n)
    
    // 正则
    'abab'.replace(reg, 'bb')
    

    事件命名

    这里根据DOM、nodejs和一些框架和UI组件的事件进行归纳

    DOM事件

    这里列举DOM中常见的事件命名

    {
      load: '已完成加载',
      unload: '资源正在被卸载',
      beforeunload: '资源即将被卸载',
      error: '失败时',
      abort: '中止时',
      focus: '元素获得焦点',
      blur: '元素失去焦点',
      cut: '已经剪贴选中的文本内容并且复制到了剪贴板',
      copy: '已经把选中的文本内容复制到了剪贴板',
      paste: '从剪贴板复制的文本内容被粘贴',
      resize: '元素重置大小',
      scroll: '滚动事件',
      reset: '重置',
      submit: '表单提交',
      online: '在线',
      offline: '离线',
      open: '打开',
      close: '关闭',
      connect: '连接',
      start: '开始',
      end: '结束',
      print: '打印',
      afterprint: '打印机关闭时触发',
      click: '点击',
      dblclick: '双击',
      change: '变动',
      select: '文本被选中被选中',
      keydown/keypress/keyup: '按键事件',
      mousemove/mousedown/mouseup/mouseleave/mouseout: '鼠标事件',
      touch: '轻按',
      contextmenu: '右键点击 (右键菜单显示前)',
      wheel: '滚轮向任意方向滚动',
      pointer: '指针事件',
      drag/dragstart/dragend/dragenter/dragover/dragleave: '拖放事件',
      drop: '元素在有效释放目标区上释放',
      play: '播放',
      pause: '暂停',
      suspend: '挂起',
      complete: '完成',
      seek: '搜索',
      install: '安装',
      progress: '进行',
      broadcast: '广播',
      input: '输入',
      message: '消息',
      valid: '有效',
      zoom: '放大',
      rotate: '旋转',
      scale: '缩放',
      upgrade: '更新',
      ready: '准备好',
      active: '激活'
    }
    

    自定义事件

    在封装组件时提供的事件名除了参考DOM事件外,在命名上也可以参考Github Api 采用 动词过去时 + Event 的方式, Visual Studio Code Api的 `on +

    {
      assignedEvent: '分配事件',
      closedEvent: '关闭事件',
      labeledEvent: '标签事件',
      lockedEvent: '锁事件',
      deployedEvent: '部署事件'
    }
    

    此外,很多命名方式可以根据场景使用 元素 + click元素 + changeselect + 范围等方式灵活运用

    {
      selectAll: '选择所有',
      cellClick: '当某个单元格被点击时会触发该事件',
      sortChange: '当表格的排序条件发生变化的时候会触发该事件'
    }
    

    状态管理命名

    如果在项目中用到了状态管理(redux/vuex/ngrx),下面给出一些ActionType,Mutation, Action的命名参考。

    // Redux 的 actionType
    LOAD_SUCCESS
    LOAD_FAIL
    TOGGLE_SHOW_HISTORY
    ON_PLAY
    ON_LOAD_START
    FETCH_SONGS_REQUEST
    RECEIVE_PRODUCTS
    
    // ngrx
    const SET_CURRENT_USER = '[User] Set current';
    const ADD_THREAD = '[Thread] Add';
    const UPDATE_TRIP_SUCCESS = 'Update [Trip] Success';
    

    时间变量命名

    // 日期、时间
    // --------------------------------------------------------
    sentAt: '发送时间'
    addAt: '添加时间'
    updateAt: '更新时间'
    startDate: '开始日期'
    endDate: '结束日期'
    startTime: '开时时间'
    endTime: '结束时间'
    

    参考资料

    文章的写作过程中参考大量优秀的文章、优秀开源项目的源码、流行框架的最佳实践指南以及一些SDK的接口文档。

    展开全文
  • R语言不能给数据框重命名

    千次阅读 2016-09-21 19:17:09
    R语言不能给数据框重命名

    简单粗暴的说,如果数据框的一列无论是用names()colnames(),rename()均不能对其重命名,那么应该是那一列本身就是一个数据框,这种情况下,用plyr包里面的函数则会报错。
    在经历了学号读入后会变成科学计数法之后,在处理数据时又遇到了一个新问题,上次用format()函数明明是可以把科学计数法变成文本的,这次在处理一个比较大的数据的时候却失灵了,使用了format()函数之后仍然是科学计数法。这时我尝试了一个方法:
    首先,把那一列数据读取到剪贴板上面,然后再用read.delim('clipboard')函数把它们读进去。但这时一定要注意了,这种方式读进去的数据格式是一个数据框,如果在把它赋值进另一个数据框的某一列,就会出现之前所说的错误,不能对该列进行重命名,使用plyr包里面的函数也会报错。我是用的解决方法是先把它转化为矩阵(as.matrix())再进行赋值,为什么不用as.vector()转化为向量呢,这个我也试过,貌似数据框不能直接转化为向量,但在R语言中矩阵就是向量,所以效果是等价的。
    P.S.这个错误让我找了半个多小时

    展开全文
  • 一、 数据框的构成 数据框是一种矩阵形式的数据,但是数据框中的各可以是不同类型的数据。 数据框每一是一个变量,每一行是一...(2)给数据框列命名 Y = data.frame('身高' = x1,'体重' = x2) print(Y) 二、数

    一、 数据框的构成

    数据框是一种矩阵形式的数据,但是数据框中的各列可以是不同类型的数据。

    数据框每一列是一个变量,每一行是一个观测。

    1、R中使用data.frame()函数构建数据框

    (1)由x1、x2构建数据框

    x1=c(171,175,159,155,152,160)
    x2=c(57,64,41,38,35,40)
    
    X = data.frame(x1,x2)
    print(X)

    在这里插入图片描述

    (2)给数据框的列命名

    Y = data.frame('身高' = x1,'体重' = x2)
    print(Y)

    在这里插入图片描述

    二、数据框的组成

    1、R中使用rbind()将两个或两个以上的向量、矩阵或数据框按行合并起来形成新的数据框

    print(rbind(x1,x2))

    在这里插入图片描述

    2、R中使用cbind()将两个或两个以上的向量、矩阵或数据框按列合并起来形成新的数据框

    print(cbind(x1,x2))

    在这里插入图片描述

    3、R中使用head()和tail()函数按行显示

    ①R中使用head()函数显示数据的前几行(默认六行)数据

    head(X)

    在这里插入图片描述

    ②R中使用tail()函数显示数据的后几行(默认六行)数据

    tail(X,3)

    在这里插入图片描述

    三、数据框的应用

    对数据框,通常使用应用函数**apply()**对行列进行统计计算:
    apply(X,MARGIN,FUN)

    其中:
    X为数据框或者矩阵
    MARGIN用来指定是对行还是对列进行操作运算,MARGIN=1表示对行,MARGIN=2表示对列
    FUN用来指定运算函数

    1、求和

    X_R = apply(X,1,sum)
    print(X_S)

    在这里插入图片描述

    2、按列求和

    X_C = apply(X,2,sum)
    print(X_C)

    在这里插入图片描述

    cbind(X,'行的和'= X_R)

    在这里插入图片描述

    展开全文
  • 现在想通过一系列转换得到如下形式的数据框: 【Python实现】 操作之前,现将相关的包导入,如下: import numpy as np from pandas import DataFrame 1、首先是读取数据,方法如下: def load_data(file_...

    【需求】

    很多个用户同时对n个题进行作答并得到结果,数据格式如下:

    现在想通过一系列转换得到如下形式的数据框:

    【Python实现】

    操作之前,现将相关的包导入,如下:

    import numpy as np
    from pandas import DataFrame

    1、首先是读取数据,方法如下:

    def load_data(file_path):
        '''
        导入数据
        :param file_path: 数据存放路径
        :return: 返回数据列表
        '''
        f = open(file_path)
        data = []
        for line in f.readlines():
            row = []  # 记录每一行
            lines = line.strip().split("\t")
            for x in lines:
                row.append(x)
            data.append(row)
        f.close()
        return data

    2、进行转换操作

    def transform_method(data):
        '''
        转换方法
        :param data: 读进来的数据列表
        :return: 返回转换后的数据框
        '''
        a = set()
        b = set()
        for i in range(len(data)):
            a.add(data[i][0])
            b.add(data[i][1])
        a = list(a)
        b = list(b)
        res = []
        for x in range(len(a)):  # 进行对比,将对应的结果存到对应的位置
            for z in range(len(b)):
                for y in range(len(data)):
                    if a[x] == data[y][0] and b[z] == data[y][1]:
                        res.append(data[y][2])
        res = b + res
        res = np.array(res).reshape(len(a) + 1, len(b))
        result = DataFrame(res)  # 转换为数据框,便于调用to_csv()方法进行存储
        result.to_csv(path + "res.csv", header=None, index=False, sep="\t")
        return result

    3、查看结果

    (1)数据处理之前:

    (2)数据处理之后

    展开全文
  • 在PySpark数据框中添加新的5种方法

    千次阅读 2020-04-28 16:44:28
    每天都在生成太多数据。 尽管有时我们可以使用Rapids或Parallelization等工具来管理大数据,但如果您使用的是TB级数据,Spark是一个很好的工具。 尽管这篇文章解释了如何使用RDD和基本的Dataframe操作,但是我在使用...
  • R语言中对数据框的列名重命名

    万次阅读 2019-04-17 17:34:31
    另外, dplyr中的select还可以选择+ 该名称, 直接指定数!!! d (old1=1:3, old2=4:6, old3=7:9) d select(d,one=1,three=3) 结果: > d (old1=1:3, old2=4:6, old3=7:9) > d old1 old2 old3 1 1 4 7 2 2 5 8 ...
  • 2.2.3 数据框(data.frame())

    千次阅读 2019-05-19 21:25:23
    由于不同的可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更为容易。数据框将是你在R中最常处理的数据结构,基本上大多数的时候用的都是数据框结构。 像2.1节中的病例数据表,包含了数值型和...
  • 随机打乱数据框DataFrame中行的顺序

    万次阅读 2018-08-05 17:57:38
    数据框(DataFrame)是pandas中一种重要的数据结构,你可以将其想象为一个关系型数据表格,其中包含多个行和已命名。可以通过字典的方式创建DataFrame,示例代码如下: import pandas as pd city_names = pd....
  • R数据框基本操作

    千次阅读 2019-02-27 20:11:28
    数据框(data.frame)是最常用的数据结构,用于存储二维表(即关系表)的数据,每一存储的数据类型必须相同,不同数据的数据类型可以相同,也可以不同,但是每的行数(长度)必须相同。数据框的每列都有唯一的...
  • R. 数据框(data.frame)解释

    千次阅读 2014-04-09 14:44:39
    数据框是一个变量,每行是一个观测。 但是,数据框有更一般的定义。它是一种特殊的列表对象,有一个值为“data.frame”的class 属性,各列表成员必须是向量(数值型、字符型、逻辑型)、因子、数值型矩阵、列表...
  • django框架的请求流程和视图函数

    千次阅读 2019-04-23 21:34:40
    请求流程 启动服务端等待客户端来连接 浏览器发出请求然后经过wsgiref.py模块。 执行urls.py中的列表,请求url和列表中的参数...函数至少有一个参数,一般命名为request, request参数是shortcutsp模块中的 。...
  • R中重命名数据框列名 文章目录前言一、基础包names函数和索引二、使用dplyr::rename函数 前言 R语言中两种修改数据框列名的小方法 创建名为df的数据框 一、基础包names函数和索引 将第二列名score修改为popularity...
  • Python数据框排序

    千次阅读 2018-11-26 10:20:19
    使用Pandas对数据进行筛选和排序   转自:http://bluewhale.cc/2016-08-06/use-pandas-filter-and-sort.html   筛选和排序是Excel中使用频率最多的功能,通过这个功能可以很方便的对数据表中的数据使用指定的...
  • 【SICP归纳】2 高阶函数数据抽象

    千次阅读 2015-03-14 15:35:55
    现在我们要让思想进一步的抽象,写这篇博客的时候并未学完整本书,更不敢说书中的内容有一个多深的领悟。但我一路学习过来,就感觉书中的示例越来越抽象,作者所引导我们的也是如此方向。博文也会持续更新下去,...
  • 1、apply函数 一个数组按行或者按进行计算,矩阵纵、横运算(sum,average等) > ma (c(1:4, 1, 6:8), nrow = 2) > ma [,1] [,2] [,3] [,4] [1,] 1 3 1 7 [2,] 2 4 6 8 > apply(ma, c(1,2), sum)
  • 这样的代码代码会把方法和变量都暴露在了全局中,我们需要将让这些数据与全局命名空间独立开来,我们将会采用模块模式(Module Pattern)来实现这个目的。模块中可以有很多不同的形式达到我们的目标,我会从最简单的...
  • R语言Data Frame数据框常用操作

    万次阅读 2018-03-20 11:31:16
    Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和组成,与Matrix不同的是,每个可以是不同的数据类型,而Matrix是必须相同的。Data Frame每一有列名,每一行也可以指定行名。如果不指定行名,那么...
  • Kotlin系列之消除函数重载

    千次阅读 2018-03-09 22:08:55
    二、Kotlin中的函数命名参数 三、Kotlin中的函数默认值参数 四、@JvmOverloads注解解决Java调用Kotlin重载函数问题 五、需要注意的问题 一、函数重载的带来问题 1、遇到问题 无论是在Java或者C++中都有...
  • R语言入门 Chapter04 | 数据框

    千次阅读 多人点赞 2020-04-12 09:48:26
    这篇文章讲述的是R语言中关于数据框的相关知识。希望这篇R语言文章您有所帮助!如果您有想学习的知识或建议,可以给作者留言~ Chapter04 | 数据框 同时推荐前面作者另外三个专栏的文章: 快速入门之Tableau系列...
  • 进行数据分析的第一步是先拿到数据,本文就简单描述一下R语言的各种数据集——向量、矩阵、数组、数据框和列表的创建及使用。向量向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c
  • R语言数据框中的stringsAsFactors参数

    千次阅读 2019-11-21 19:31:10
    R语言数据框中的stringsAsFactors参数数据框基本建立参数:stringsAsFactors 数据框基本建立 (注:本文章中的Name变量区分大小写) Name <- c("A BC", "D EF", "H IJ") age <- c(1,2,3) sex <- c(TRUE, ...
  • 数据处理pandas常用的函数

    千次阅读 2018-06-21 17:04:08
    这一部分主要是数据处理中常用的一些函数 最近突然要处理大量的数据,而且都是基本统计相关的操作,这些都是可以在excel中实现的只是实现起来不能auto,所以使用Python进行操作来实现自动化。先来熟悉一波函数,在...
  • 数据框类似于二维的关系表,包含一组有序的之间的数据类型可以是不同的,但是单个中的值的数据类型是相同的。DataFrame既有行索引(index),也有索引(columns),行索引也叫做行标签,索引也叫做...
  • R语言学习(3)-列表和数据框

    千次阅读 2014-08-02 00:49:01
    列表和数据框 1.列表  list函数创建列表 > (a_list 1,-3),nrow=2),asin)) [[1]] [1] 1 1 2 5 14 42 [[2]]  [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep...
  • 数组、矩阵、列表和数据框的应用 #R语言备忘录三# #数组array和矩阵matrix、列表list、数据框dataframe #数组 #数组的重要属性就是dim,维数 #得到4*5的矩阵 z dim(z) (3,4) z #构建数组 x (1:20, dim = c(4,5)...
  • 函数vector有两个参数:类型(mode)和长度(length),创建的向量中元素值取决于参数所指定的数据类型:数值型向量则元素值都为0,逻辑型都为FALSE,字符型都为""。以下三个函数有几乎相同的效果(创建一个向量)并且只有一个...
  • 之前一直使用devart的产品,主流数据库Oracle、mysql、SQL Server的存储过程、实体集、函数支持都非常好。但是最近有点洁癖,不想引用太多外来组件,所以尝试着使用了传说中的“EF”(尽管之前使用的devart已经是...
  • R语言中数据框变量的重命名

    千次阅读 2020-06-03 02:30:18
    以编程的方式,reshape包中有一个rename()函数 > install.packages("reshape") > library(reshape) > mydata<-rename(mydata,c(x1="x3")) > mydata x3 x2 sum mean 1 1 5 6 3 2 2 6 8 4 3 3 7 10 5...
  • 初识函数 func function_name( [parameter list] ) [return_types] { 函数体 [return 返回值列表] } 参数 位置参数 返回值

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 178,438
精华内容 71,375
关键字:

对数据框列命名函数是