1155 6

[问答] r有没有权威的编码规范啊 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

61%

还不是VIP/贵宾

-

威望
0
论坛币
377 个
通用积分
4.0079
学术水平
0 点
热心指数
6 点
信用等级
0 点
经验
3788 点
帖子
92
精华
0
在线时间
177 小时
注册时间
2016-3-20
最后登录
2022-8-7

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
看到个google的规范说什么变量名中间要加点,函数名第一个要大写,感觉不太好,现在基本是按照java的规范写代码,有没有权威的r规范啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:有没有 Google Java 说什么 jav

沙发
bbslover 发表于 2017-3-13 08:09:26 |只看作者 |坛友微信交流群
https://google.github.io/styleguide/Rguide.xml    这个不错


Google's R Style Guide

R is a high-level programming language used primarily for statistical computing and graphics. The goal of the R Programming Style Guide is to make our R code easier to read, share, and verify. The rules below were designed in collaboration with the entire R user community at Google.

Summary: R Style Rules

File Names: end in .R
Identifiers: variable.name (or variableName), FunctionName, kConstantName
Line Length: maximum 80 characters
Indentation: two spaces, no tabs
Spacing
Curly Braces: first on same line, last on own line
else: Surround else with braces
Assignment: use <-, not =
Semicolons: don't use them
General Layout and Ordering
Commenting Guidelines: all comments begin with # followed by a space; inline comments need two spaces before the #
Function Definitions and Calls
Function Documentation
Example Function
TODO Style: TODO(username)
Summary: R Language Rules

attach: avoid using it
Functions: errors should be raised using stop()
Objects and Methods: avoid S4 objects and methods when possible; never mix S3 and S4
Notation and Naming

File Names

File names should end in .R and, of course, be meaningful.
GOOD: predict_ad_revenue.R
BAD: foo.R

Identifiers

Don't use underscores ( _ ) or hyphens ( - ) in identifiers. Identifiers should be named according to the following conventions. The preferred form for variable names is all lower case letters and words separated with dots (variable.name), but variableName is also accepted; function names have initial capital letters and no dots (FunctionName); constants are named like functions but with an initial k.

variable.name is preferred, variableName is accepted
GOOD: avg.clicks
OK: avgClicks
BAD: avg_Clicks
FunctionName
GOOD: CalculateAvgClicks
BAD: calculate_avg_clicks , calculateAvgClicks
Make function names verbs.
Exception: When creating a classed object, the function name (constructor) and class should match (e.g., lm).
kConstantName
Syntax

Line Length

The maximum line length is 80 characters.

Indentation

When indenting your code, use two spaces. Never use tabs or mix tabs and spaces.
Exception: When a line break occurs inside parentheses, align the wrapped line with the first character inside the parenthesis.

Spacing

Place spaces around all binary operators (=, +, -, <-, etc.).
Exception: Spaces around ='s are optional when passing parameters in a function call.

Do not place a space before a comma, but always place one after a comma.

GOOD:

tab.prior <- table(df[df$days.from.opt < 0, "campaign.id"])
total <- sum(x[, 1])
total <- sum(x[1, ])
BAD:

tab.prior <- table(df[df$days.from.opt<0, "campaign.id"])  # Needs spaces around '<'
tab.prior <- table(df[df$days.from.opt < 0,"campaign.id"])  # Needs a space after the comma
tab.prior<- table(df[df$days.from.opt < 0, "campaign.id"])  # Needs a space before <-
tab.prior<-table(df[df$days.from.opt < 0, "campaign.id"])  # Needs spaces around <-
total <- sum(x[,1])  # Needs a space after the comma
total <- sum(x[ ,1])  # Needs a space after the comma, not before
Place a space before left parenthesis, except in a function call.

GOOD:
if (debug)

BAD:
if(debug)

Extra spacing (i.e., more than one space in a row) is okay if it improves alignment of equals signs or arrows (<-).

plot(x    = x.coord,
     y    = data.mat[, MakeColName(metric, ptiles[1], "roiOpt")],
     ylim = ylim,
     xlab = "dates",
     ylab = metric,
     main = (paste(metric, " for 3 samples ", sep = "")))
Do not place spaces around code in parentheses or square brackets.
Exception: Always place a space after a comma.

GOOD:

if (debug)
x[1, ]
BAD:

if ( debug )  # No spaces around debug
x[1,]  # Needs a space after the comma
Curly Braces

An opening curly brace should never go on its own line; a closing curly brace should always go on its own line. You may omit curly braces when a block consists of a single statement; however, you must consistently either use or not use curly braces for single statement blocks.


if (is.null(ylim)) {
  ylim <- c(0, 0.06)
}
xor (but not both)


if (is.null(ylim))
  ylim <- c(0, 0.06)
Always begin the body of a block on a new line.

BAD:
if (is.null(ylim)) ylim <- c(0, 0.06)
if (is.null(ylim)) {ylim <- c(0, 0.06)}

Surround else with braces

An else statement should always be surrounded on the same line by curly braces.


if (condition) {
  one or more lines
} else {
  one or more lines
}
BAD:

if (condition) {
  one or more lines
}
else {
  one or more lines
}
BAD:

if (condition)
  one line
else
  one line
Assignment

Use <-, not =, for assignment.

GOOD:
x <- 5

BAD:
x = 5

Semicolons

Do not terminate your lines with semicolons or use semicolons to put more than one command on the same line. (Semicolons are not necessary, and are omitted for consistency with other Google style guides.)

Organization

General Layout and Ordering

If everyone uses the same general ordering, we'll be able to read and understand each other's scripts faster and more easily.

Copyright statement comment
Author comment
File description comment, including purpose of program, inputs, and outputs
source() and library() statements
Function definitions
Executed statements, if applicable (e.g., print, plot)
Unit tests should go in a separate file named originalfilename_test.R.

Commenting Guidelines

Comment your code. Entire commented lines should begin with # and one space.

Short comments can be placed after code preceded by two spaces, #, and then one space.

# Create histogram of frequency of campaigns by pct budget spent.
hist(df$pct.spent,
     breaks = "scott",  # method for choosing number of buckets
     main   = "Histogram: fraction budget spent by campaignid",
     xlab   = "Fraction of budget spent",
     ylab   = "Frequency (count of campaignids)")
Function Definitions and Calls

Function definitions should first list arguments without default values, followed by those with default values.

In both function definitions and function calls, multiple arguments per line are allowed; line breaks are only allowed between assignments.
GOOD:

PredictCTR <- function(query, property, num.days,
                       show.plot = TRUE)
BAD:
PredictCTR <- function(query, property, num.days, show.plot =
                       TRUE)
Ideally, unit tests should serve as sample function calls (for shared library routines).

Function Documentation

Functions should contain a comments section immediately below the function definition line. These comments should consist of a one-sentence description of the function; a list of the function's arguments, denoted by Args:, with a description of each (including the data type); and a description of the return value, denoted by Returns:. The comments should be descriptive enough that a caller can use the function without reading any of the function's code.

Example Function


CalculateSampleCovariance <- function(x, y, verbose = TRUE) {
  # Computes the sample covariance between two vectors.
  #
  # Args:
  #   x: One of two vectors whose sample covariance is to be calculated.
  #   y: The other vector. x and y must have the same length, greater than one,
  #      with no missing values.
  #   verbose: If TRUE, prints sample covariance; if not, not. Default is TRUE.
  #
  # Returns:
  #   The sample covariance between x and y.
  n <- length(x)
  # Error handling
  if (n <= 1 || n != length(y)) {
    stop("Arguments x and y have different lengths: ",
         length(x), " and ", length(y), ".")
  }
  if (TRUE %in% is.na(x) || TRUE %in% is.na(y)) {
    stop(" Arguments x and y must not have missing values.")
  }
  covariance <- var(x, y)
  if (verbose)
    cat("Covariance = ", round(covariance, 4), ".\n", sep = "")
  return(covariance)
}
TODO Style

Use a consistent style for TODOs throughout your code.
TODO(username): Explicit description of action to be taken

Language

Attach

The possibilities for creating errors when using attach are numerous. Avoid it.

Functions

Errors should be raised using stop().

Objects and Methods

The S language has two object systems, S3 and S4, both of which are available in R. S3 methods are more interactive and flexible, whereas S4 methods are more formal and rigorous. (For an illustration of the two systems, see Thomas Lumley's "Programmer's Niche: A Simple Class, in S3 and S4" in R News 4/1, 2004, pgs. 33 - 36: https://cran.r-project.org/doc/Rnews/Rnews_2004-1.pdf.)

Use S3 objects and methods unless there is a strong reason to use S4 objects or methods. A primary justification for an S4 object would be to use objects directly in C++ code. A primary justification for an S4 generic/method would be to dispatch on two arguments.

Avoid mixing S3 and S4: S4 methods ignore S3 inheritance and vice-versa.

Exceptions

The coding conventions described above should be followed, unless there is good reason to do otherwise. Exceptions include legacy code and modifying third-party code.

Parting Words

Use common sense and BE CONSISTENT.

If you are editing code, take a few minutes to look at the code around you and determine its style. If others use spaces around their if clauses, you should, too. If their comments have little boxes of stars around them, make your comments have little boxes of stars around them, too.

The point of having style guidelines is to have a common vocabulary of coding so people can concentrate on what you are saying, rather than on how you are saying it. We present global style rules here so people know the vocabulary. But local style is also important. If code you add to a file looks drastically different from the existing code around it, the discontinuity will throw readers out of their rhythm when they go to read it. Try to avoid this.

OK, enough writing about writing code; the code itself is much more interesting. Have fun!

References

http://www.maths.lth.se/help/R/RCC/ - R Coding Conventions

http://ess.r-project.org/ - For emacs users. This runs R in your emacs and has an emacs mode.
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
李会超 + 60 精彩帖子
nuomin + 100 + 20 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 160  论坛币 + 20  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

bbslover 发表于 2017-3-13 08:09
https://google.github.io/styleguide/Rguide.xml    这个不错
我找到的就是这个,感觉变量名和函数名的规定不太好

使用道具

板凳
cheetahfly 在职认证  发表于 2017-3-13 22:13:28 |只看作者 |坛友微信交流群
札翰时相投2 发表于 2017-3-13 15:56
我找到的就是这个,感觉变量名和函数名的规定不太好
哈哈,如果不习惯google的,可以参考一下大神Hadley Wickham建议的style guide,可能会合你的胃口。
http://adv-r.had.co.nz/Style.html

使用道具

cheetahfly 发表于 2017-3-13 22:13
哈哈,如果不习惯google的,可以参考一下大神Hadley Wickham建议的style guide,可能会合你的胃口。
htt ...
好的,我就想变量名函数名之类的和python一样,用小写下划线

使用道具

地板
niheaven 发表于 2017-3-14 13:41:22 |只看作者 |坛友微信交流群
http://style.tidyverse.org/

这个应该是比较合适的,RStudio旗下tidyverse通用的。

使用道具

7
qoiqpwqr 发表于 2017-3-14 19:25:36 |只看作者 |坛友微信交流群
个人喜好不同,自己习惯就好。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-31 06:55