ååã®「Googleã¨Facebookã§ã¯Rã¯ã©ã®ããã«ä½¿ããã¦ããã?」ãæå¤ã¨äººæ°ã ã£ããã、å¼ãç¶ãçµ±è¨ã½ããRã®ã話。
ä»ååãä¸ããã®ã¯、Googleã§ã®Rã³ã¼ãã£ã³ã°ã¹ã¿ã¤ã«ã«ã¤ãã¦。
ãããã¡ãã£ã¨èª¿ã¹ç©ããã¦ããéã«çºè¦ãããã¼ã¸ã§ã。
(ãããããã、Rãå©ç¨ããã¦ããæ¹ã«ã¨ã£ã¦ã¯ããã¥ã©ã¼ãªãã¼ã¸ããããã¾ããã)
ä»åããã¡ãã®ãã¼ã¸ãæ¥æ¬èªè¨³ã«ææ¦ãã¦ã¿ã¾ãã。
(ä¾ã«ãã£ã¦è±è¨³ã«èª¤è¨³çãããããããã¾ãã…ã容赦ãã ãã)
Googleã§ã®Rã³ã¼ãã£ã³ã°ã¹ã¿ã¤ã«
ä»åã®ãã¼ã¸ã¯ãã¡ã。GoogleCodeã®ä¸ã®ãã¼ã¸ã§ã。å ã ã¯GoogleCodeã®ä¸ã§、å種è¨èªã®ã³ã¼ãã£ã³ã°ã¹ã¿ã¤ã«ãè¨è¼ããã¦ããããã§ã。
C++ã、Objective-C、Pythonã®ã¹ã¿ã¤ã«ãæ¸ãã¦ããã¾ãã。
Google's R Style Guide
ãµããªã¼:Rã¹ã¿ã¤ã«ã«ã¼ã«
1.ãã¡ã¤ã«å:「.R」ã§çµãããã¨2.ã¢ã¤ãã³ãã£ãã£:å¤æ°.åå、é¢æ°å、å®æ°
3.ä¸è¡ã®æåæ°:æ大80æå
4.ã¤ã³ãã³ã:2ã¤ã®ã¹ãã¼ã¹。ã¿ãã¯ä½¿ããªã
5.ã¹ãã¼ã¹ã®åãæ¹
6.ä¸æ¬å¼§({} ←ããã®äº!ç¥ããªãã£ã。Curly Bracesã£ã¦ãããã§ãã)
7.ä»£å ¥:「<- 」ãå©ç¨ãã¾ããã。「=」ãããªãã¦。
8.ã»ãã³ãã³:使ã£ã¡ããã¡
9.ä¸è¬çãªè¡¨è¨
10.ã³ã¡ã³ãã¬ã¤ãã©ã¤ã³:ãã¹ã¦ã®ã³ã¡ã³ãã¯「#」ã®å¾ã«ã¹ãã¼ã¹ãå ¥ãã。ã¤ã³ã©ã¤ã³ã¯「#」ã®åã«ã¹ãã¼ã¹ï¼ã¤
11.é¢æ°ã®å®ç¾©ã¨å¼ã³åºã
12.é¢æ°ã®ããã¥ã¡ã³ã
13.é¢æ°ä¾
14.ToDoä¾
ãµããªã¼:Rè¨èªã®ã«ã¼ã«
1. attach:使ç¨ãé¿ãã。2.é¢æ°:ã¨ã©ã¼ã¯stop()ãå©ç¨ãã¦è¡¨ç¤ºããã。
3.ãªãã¸ã§ã¯ãã¨ã¡ã½ãã:å¯è½ã§ããã°、S4ãªãã¸ã§ã¯ãã¨ã¡ã½ããã¯ä½¿ç¨ãé¿ãã。S3ã¨S4ã¯æ··ãã¦å©ç¨ããªã。
表è¨æ³ã¨ãã¼ãã³ã°
・ãã¡ã¤ã«åãã¡ã¤ã«åã¯「.R」ã§çµãã、æå³ããããããã«å½åããã。
[ãã¡ã¤ã«å]
è¯ãä¾:predict_ad_revenue.R
æªãä¾:foo.R
・ã¢ã¤ãã³ãã£ãã£
「_」(ã¢ã³ãã¼ã¹ã³ã¢)ã「ã¼」(ãã¤ãã³)ã¯å©ç¨ããªã。ã¢ã¤ãã³ãã£ãã£ã¯ä»¥ä¸ã®æ £ä¾ã«ãããã£ã¦å©ç¨ãã。
å¤æ°åã¯ãã¹ã¦å°æåã§、「.」(ããã」ã¯å©ç¨ãã¦æå³ãã¤ãã。é¢æ°åã¯å é ã大æåã«ãã¦ããããå©ç¨ããªã。
å®æ°ã¯é¢æ°ã¨åæ§ã«è¡¨è¨ãã¦æåã«「k」ãå ¥ãã。
[å¤æ°]
è¯ãä¾:avg.clicks
æªãä¾:avg_Clicks , avgClicks
[é¢æ°å]
è¯ãä¾:CalculateAvgClicks
æªãä¾:calculate_avg_clicks , calculateAvgClicks
[å®æ°å]
kConstantName
ã·ã³ã¿ãã¯ã¹
・ä¸è¡ã®æåæ°æ大ã§ã1è¡80æå
・ã¤ã³ãã³ã
ã³ã¼ãã«ã¤ã³ãã³ããå ¥ããå ´å、2ã¤ã®ã¹ãã¼ã¹ãå ¥ãã。ã¿ããã¿ãã¨ã¹ãã¼ã¹ãæ··ãããã®ã¯å©ç¨ããªã。
・空ç½
ã¹ãã¼ã¹ã¯、ãã¹ã¦ã®ãã¤ããªãªãã¬ã¼ã¿(=, +, -, <-, ã»ã.)ã®å¨ãã§å©ç¨ãã。 ã³ã³ãã®åã«ã¯ã¹ãã¼ã¹ã¯å ¥ããã«、ã³ã³ãã®å¾ã«ã¹ãã¼ã¹ãå ¥ãã。
è¯ãä¾:tabPrior <- table(df[df$daysFromOpt < 0, "campaignid"])
total <- sum(x[, 1])
total <- sum(x[1, ])
æªãä¾:tabPrior <- table(df[df$daysFromOpt<0, "campaignid"]) # '<'ã®å¨ãã«ã¹ãã¼ã¹ãå¿ è¦
tabPrior <- table(df[df$daysFromOpt < 0,"campaignid"]) # ã³ã³ãã®å¾ãã«ã¹ãã¼ã¹ãå¿ è¦
tabPrior<- table(df[df$daysFromOpt < 0, "campaignid"]) # '<-' ã®åã«ã¹ãã¼ã¹ãå¿ è¦
tabPrior<-table(df[df$daysFromOpt < 0, "campaignid"]) # '<-'ã®å¨ãã«ã¹ãã¼ã¹ãå¿ è¦
total <- sum(x[,1]) # ã³ã³ãã®å¾ã«ã¹ãã¼ã¹ãå¿ è¦
total <- sum(x[ ,1]) # ã³ã³ãã®åã«ã¹ãã¼ã¹ãå¿ è¦
左辺ã®åã«ã¹ãã¼ã¹ãå ¥ãã。(é¢æ°å¼ã³åºã以å¤)
è¯ãä¾:if (debug)
æªãä¾:if(debug)
ã¤ã³ã¼ã«ãã¢ãã¼(<-)ãæ¹åããã®ã§ããã°、ï¼è¡ã«ä»ã®ã¹ãã¼ã¹ã®å ¥ããã®ãåé¡ãªã。
plot(x = xCoord,
y = dataMat[, makeColName(metric, ptiles[1], "roiOpt")],
ylim = ylim,
xlab = "dates",
ylab = metric,
main = (paste(metric, " for 3 samples ", sep="")))
) ※è¦ããããªãã°、ã¹ãã¼ã¹ã¯å ¥ãã¦ãåé¡ãªã。
ã«ãã³ããã©ã±ããã®å¨ãã«ã¯ã¹ãã¼ã¹ã¯ããã¦ã¯ãªããªã。
ä¾å¤:ã³ã³ãã®å¾ã«ã¹ãã¼ã¹ãå ¥ãã。
è¯ãä¾:if (debug)
x[1, ]
æªãä¾:if ( debug ) # "debug"ã®å¨ãã«ã¯ã¹ãã¼ã¹ãå ¥ããªã
x[1,] # ã³ã³ãã®å¾ã«ã¯ã¹ãã¼ã¹ãå ¥ãã。
・ä¸æ¬å¼§
ä¸æ¬å¼§ã®éå§ã¯ããåä½ã§å§ãã¦ã¯ãªããªã。çµäºã®ä¸æ¬å¼§ã¯ããã ãã§ï¼è¡ã«ãã¦ãã。ï¼è¡ã§æ§æãããå ´åã¯ä¸æ¬å¼§ã¯è¦ãã¦ããã。
if (is.null(ylim)) { ylim <- c(0, 0.06) }xor (but not both)
if (is.null(ylim))ylim <- c(0, 0.06)
ãããã¯æ¬ä½ã¯æ°ããè¡ã§éå§ãããªããã°ãªããªã。
æªãä¾:if (is.null(ylim)) ylim <- c(0, 0.06) #ä¸æ¬å¼§ãå ¥ãã
if (is.null(ylim)) {ylim <- c(0, 0.06)} #æ¹è¡ãå ¥ãã
・ä»£å ¥
「<-」ãå©ç¨。「=」ã¯å©ç¨ããªã。
è¯ãä¾:x <- 5 #「<-」ãå©ç¨ãã¦ãã。
æªãä¾:x = 5 #「=」ãå©ç¨ãã¦ãã。
・ã»ãã³ãã³
ã»ãã³ãã³ã§çµãããã¦ã¯ãããªãã、ï¼ã¤ã®ã³ãã³ããåãè¡ã«å©ç¨ããå ´åã¯、ã»ãã³ãã³ã¯çç¥ãã¦ã¯ãªããªã。
(ã»ãã³ãã³ã¯å¿ è¦ã§ã¯ããã¾ãããä»ã®Googleã¹ã¿ã¤ã«ã¬ã¤ãã§ãçç¥ããã¦ãã¾ã)
æ§æ
・ä¸è¬çãªã¬ã¤ã¢ã¦ãã¨é çªã¿ãªãããçµ±ä¸ãããé çªã§ã³ã¼ããæ¸ãã¨、ç§ãã¡ã¯、ãäºãã®ã³ã¼ã(ã¹ã¯ãªãã)ãæ©ãããã¦ããç°¡åã«ç解ãããã¨ãã§ãã¾ã。
1. èä½æ¨©ã³ã¡ã³ã
2. ä½è ã³ã¡ã³ã
3. ããã°ã©ã ã®ç®ç、ã¤ã³ããã、ã¢ã¦ãããããå«ãããã¡ã¤ã«ã®è©³ç´°ã³ã¡ã³ã、
4. source()、library()ã¹ãã¼ãã¡ã³ããè¨å ¥
5. é¢æ°ã®å®ç¾©
6. print ,plotãªã©ã®å®è¡ããã¹ãã¼ãã¡ã³ã
åä½ãã¹ããè¡ãå ´åã¯、originalfilename_unittest.Rã®ããã«å¥ãã¡ã¤ã«ã«ãããã¨。
・ã³ã¡ã³ãã¬ã¤ãã©ã¤ã³
ã³ã¡ã³ããã³ã¼ãã«æ¸ãã¦ãã ãã。ãã¹ã¦ã®ã³ã¡ã³ãã¯「#」ã®å¾ã«ã¹ãã¼ã¹ã§æ¸ãã¦ãã ãã。
çãã³ã¡ã³ãã¯ã³ã¼ãã®å¾ãã«ï¼ã¤ã¹ãã¼ã¹ãå ¥ã、「#」ã®å¾ã«ï¼ã¤ã¹ãã¼ã¹ãå ¥ãã¦ãã ãã。
# Create histogram of frequency of campaigns by pct budget spent.
# é·ãã³ã¡ã³ãã¯ï¼è¡ã«。#ã¹ãã¼ã¹ã§å§ãã
hist(df$pctSpent,
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)")
・é¢æ°ã®å®ç¾©ã¨å¼ã³åºã
é¢æ°ã®å®ç¾©ã¯、ããã©ã«ãå¤ä»¥å¤ãæåã«æã£ã¦ãã¦、ãã®å¾ã«ããã©ã«ãå¤ãæã£ã¦ãã。
é¢æ°ã®å®ç¾©ã¨å¼ã³åºãã両æ¹è¡ãå ´å、è¤æ°è¡ã«ããã£ã¦ããã。æ¹è¡ã¯ä»£å ¥ã®å ´åã«è¨±ããã。
è¯ãä¾:PredictCTR <- function(query, property, numDays,
showPlot = TRUE) # ä»£å ¥ãè¡ã£ã¦ãããã、æ¹è¡ãã¦ããã。
æªãä¾:PredictCTR <- function(query, property, numDays, showPlot = TRUE)# ä»£å ¥ã§æ¹è¡ããã¦ããªã。
ååçã«、åä½ãã¹ãã¯ãµã³ãã«é¢æ°ã§å¼ã³åºãããã¹ãã§ãã。
・é¢æ°ã®ããã¥ã¡ã³ã
é¢æ°ã®ããã¥ã¡ã³ãã¯é¢æ°ã®å®ç¾©ã®ããä¸ã«ã³ã¡ã³ããæ¸ããæ¹ããã。ãããã®ã³ã¡ã³ãã¯ï¼ã»ã³ãã³ã¹ã§æ§æå·®ããã¹ãã§「Args:」ã§èª¬æããã»ãããã。æ¥ä»ãå«ãè¿ãå¤ã¯「Returns:」ã§èª¬æããã»ãããã。
ã³ã¡ã³ãã¯ä»ã®å©ç¨è ããé¢æ°ã³ã¼ããè¦ãªãã¦ã使ããããã«ååã«æ¸ãå¿ è¦ããã。
・é¢æ°ã®ãµã³ãã«ã³ã¼ã
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 invalid 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ã¹ã¿ã¤ã«ä¸è²«ããã¹ã¿ã¤ã«ã§TODOãªã¹ãã¯æ¸ãã¦ãã ãã。
è¨èª
・Attachattachãå©ããå ´å、大éã®ã¨ã©ã¼ãçæããå ´åãããã¾ã。å©ç¨ã¯é¿ãã¦ãã ãã。
・é¢æ°
ã¨ã©ã¼ãçºçãããå ´åã¯、stop()é¢æ°ã§ã¨ã©ã¼ã表示ããã¦ãã ãã。
・ãªãã¸ã§ã¯ãã¨ã¡ã½ãã
Sè¨èªã¯ï¼ã¤ã®ãªãã¸ã§ã¯ãã·ã¹ãã ãæã£ã¦ãã¦、両æ¹ã¨ãRã§ã¯å©ç¨ã§ãã¾ã。
S3ã¡ã½ããã¯ã¤ã³ã¿ã©ã¯ãã£ãã§æè»ã§ãã、S4ã¯ãã©ã¼ãã«ã§å³æ ¼ã§ã。
S4ãªãã¸ã§ã¯ããå©ç¨ããå¼·ãçç±ããªãéã、S3ãªãã¸ã§ã¯ããå©ç¨ãã¦ãã ãã。
S4ãªãã¸ã§ã¯ããå©ç¨ããéã®ç¬¬ä¸ã®çç±ã¯C++ã³ã¼ããç´æ¥å©ç¨ããå ´åã§ã。
S3ã¨S4ãæ··ãã¦ä½¿ãã®ã¯é¿ãã¦ãã ãã。S4ã¡ã½ããã¯S3ã®è³ç£ç¡è¦ãã¾ã。ãã®ã¾ãéãåãã§ã。
ä¾å¤
ä»ã«åççãªçç±ããªãéãã¯ã³ã¼ãã£ã³ã°ã¹ã¿ã¤ã«ã¯ä¸è¨ã«å¾ãã¹ãã§ã。ä¾å¤ã¯、å¤ãã³ã¼ããï¼rdãã¼ãã£ã¼ã®ã³ã¼ãã«å«ã¾ãã¾ã。
æå¾ã«
ã³ã¼ããæ¸ãéã¯、ä¸è¬å¸¸èã¨ä¸è²«æ§ã使ã£ã¦ãã ãã。ããã³ã¼ããæ¸ãå ´å、æ°åéã使ã£ã¦、ã³ã¼ãå¨ããè¦æ¸¡ãã¦ããªãã®ã³ã¼ãã£ã³ã°ã¹ã¿ã¤ã«ã決ãã¦ãã ãã。
ããä»ã®æ¹ãifæã®åãã«ã¹ãã¼ã¹ãå©ç¨ãã¦ããå ´å、ããã«å¾ã£ã¦ãã ãã。ã¾ã、ä»ã®æ¹ãã³ã¡ã³ãã«æãå©ç¨ãã¦ããå ´å、ããªããåæ§ã«ãã¦ãã ãã。
ã¹ã¿ã¤ã«ã¬ã¤ãã©ã¤ã³ã®ãã¤ã³ãã¯、ã³ã¼ããæ¸ã人ãããªããä½ããããã¨ãã¦ããã、ããã«ã©ããã£ã¦å®ç¾ããããç解ãã、éä¸ãããããã®å ±éã®ç¨èªã§ã。ç§ãã¡ã¯、å ±éã®ç¨èªãç¥ã人ã®ããã¹ã¿ã¤ã«ã«ã¼ã«ãæä¾ãã¾ãã。
ããã、ãã¼ã«ã«ã¹ã¿ã¤ã«ã¯åæ§ã«éè¦ã§ã。ããããªãã追å ãããã¨ãããã¡ã¤ã«ã®ã³ã¼ãã£ã³ã°ã¹ã¿ã¤ã«ãå¤§å¹ ã«éãå ´å、(ã³ã¼ãã¹ã¿ã¤ã«ã®)ä¸é£ç¶æ§ã¯、ã³ã¼ããèªãã¨ãã«ãªãºã ãå´©ãã¾ã。ããã¯é¿ãã¦ãã ãã。
ã³ã¼ããæ¸ãããã®ã¹ã¿ã¤ã«ã¯ããã§ååã§ã。ã³ã¼ãèªä½ã¯é常ã«é¢ç½ãã§ã。
楽ããã§!
ãªãã¡ã¬ã³ã¹
http://www.maths.lth.se/help/R/RCC/ - R Coding Conventionshttp://ess.r-project.org/ - For emacs users. This runs R in your emacs and has an emacs mode.
æ¸ãçµãã£ã¦
ãã®ããã°ãå§ã¾ã£ã¦ä»¥æ¥,æ大ã®é·ãã«ãªã£ã¦ãã¾ãã¾ãã。ããããRãåå¼·ãããã¨ããã人(ç§ãå«ãã¦)ã«ã¨ã£ã¦åèã«ãªãã°ã¨æãã¾ã。
0 件ã®ã³ã¡ã³ã:
ã³ã¡ã³ããæ稿