1. 程式人生 > >Coursera系列-R Programming-Final Week-Assignment3 & 總結

Coursera系列-R Programming-Final Week-Assignment3 & 總結

-------

經過週末一個半天的努力,終於把這次的Assignment3做出來,然後做完Quiz4,順利結束R Programming這門課程。

對這門課的綜合吐槽就是,Roger老師的github頭像好帥,動態視訊更帥,視訊內容還算充足,但遠遠不足以應付assignment。Assignment設計一個比一個精巧,難度一個比一個大,沒有足夠的耐性以及一定的基礎,還真的很難獨自應付完R Programming這門課。如果不是我買了付費證書,以及工作中確實需要R,估計學著學著就廢掉了吧……

但是話說回來,這門課的assignment設計的還是頗為精巧的。

Swirl,

這個是個包,帶我們瞭解R的大部分內容。呼叫library(swirl), swirl()即可。R初學者請一定學習學習!設計極好!

Assignment1,

帶我們初步瞭解了迴圈,以及資料讀取和rbind。精華語句是以下兩段(程式碼已修改,以避免洩題)。在這裡,初步涉及了函式的編寫,迴圈的使用,以及資料框型別的先定義和rbind語句。同時在某個函式裡通過threhold的引用,引入了if else結構。

https://github.com/derekfranks/practice_assignment/blob/master/practice_assignment.rmd

上面的github教程是我見過最好的指導教程,沒有它,assignment1就跪了。

 files_list<-list.files(directory,full.names=TRUE)

#read file list & cycle reading data

dat<-data.frame()
for (i in id){ id=i new1=sum(read.csv(files_list[i])) dat<-rbind(dat,new1) }

Assignment2,

這個的精華在於對詞法作用域的介紹,並介紹了函式快取值,虛擬函式,函式內變數,以及<<-的使用。不過從程式碼的角度來說,示例的實際應用意義不大。倒不如quiz裡涉及的東西全面。但好好消化以後,會發現對詞法作用域有了較深的理解,在之後用sapply, lapply, tapply等函式時,也比較敢於程式設計了。

        set <- function(y){
                x<<-y
                m<<-NULL

        setSolve <- function(solve) m<<-solve

Assignment3,這道題由3個部分組成,除了第二部分外,剩下兩部分都要耗時4-5個小時思考……不愧是壓軸的assignment,做到讓人近似崩潰。但是這個也是對R知識應用最綜合的題目。前面兩部分要用到的函式,以及方法,在本次assignment3裡都被拎出來

整理一下:

1)資料框,我們經常會用split按照某個變數拆分資料框,這樣會出來一系列由data.frame組合的list。

如果用data[i],只會拿到一堆list,只有用data[[i]]才能拿到原本的data.frame格式。這是為什麼以下程式碼可以生效的原因。

data_split<-split(data_complete,data_complete$State)

 new1<-cbind(data_order[[i]],rank)

2)資料框篩選,我們要麼用==直接獲得等於某個數值的資料庫,要麼我們可以利用!any或者all函式來判斷,某個值是否在資料框裡,如果不在,彈出錯誤資訊。但是注意,這裡由於迴圈補齊的原因,num,outcome以單個字元/數字為佳。向量要用其他方法。

final<-r[r$rank==num,]

 if (!any(colname==outcome)){
       stop("invalid outcome") 

3)關於numeric函式,如果一個數據裡有一堆ta,1,2,3,4, not avilalbe,使用as.numeric可以快速的把非數值函式轉化為NA。這樣才可以加入計算。(對於取整,用as.integer效率奇佳)

 var<-as.numeric(list[colname==outcome,1])

4)利用colnames(x)<-c(ddd,ddd)可以給資料庫快速命名

 colnames(final)<-c("hospital","state")

5)關於排序,先獲得split的函式後,使用lapply可以快速對資料進行排序。然後用rbind,[[i]]又可以快速結合回來

data_order<-lapply(data_split,function(x) x[order(x[,3],x[,1]),])

6)關於1:length。之前在這裡考死了很多回。後來發現,如果nrow()-1<-0,NA的話,用2:nrow-1會返回一個2,1,0向量。這樣,在迴圈補齊時就會報錯。而且是報很多錯。然後if else, else一定要接在}後面,另起一行的話,R也很容易報錯<--論良好的函式書寫習慣的重要性。

 if (nrow(xx[[i]])==1) {
                        rank=c("a")
                } else {
                        if (nrow(data_order[[i]])==2){
                                rank=c("a","d")
                        }else {
                                rank=c("a",2:(nrow(data_order[[i]])-1),"d")}}
                

綜上,這是我在做assignment3裡被踩過的若干個坑……

感謝我終於出來了

謝謝JHU貢獻的這麼有操作意義的R Programming的課程,接下來打算繼續跟著學習cleanning data,聽說assignment也很難ε(罒ω罒)з。。。。給跪

最後補充一下

當全身心投入一門課的學習時,會覺得時間過得很快,也很充實。之後不會再迷茫了。資料分析,其實就是多學,多練,多思考,多做碼農。慶幸我開始的還不算太晚。

以及,因為這個月太沉迷於R,被同事吐槽說,一整天撲在程式設計還有R上,怪不得你沒有男朋友……單身狗內牛滿面……

相關推薦

Coursera系列-R Programming-Final Week-Assignment3 & 總結

------- 經過週末一個半天的努力,終於把這次的Assignment3做出來,然後做完Quiz4,順利結束R Programming這門課程。 對這門課的綜合吐槽就是,Roger老師的github頭像好帥,動態視訊更帥,視訊內容還算充足,但遠遠不足以應付assignment。Assignment設

Coursera系列-R Programming第三週-詞法作用域

完成R Programming第三週 這周作業有點繞,更多地是通過一個快取逆矩陣的案例,向我們示範【詞法作用域 Lexical Scopping】的功效。但是作業裡給出的函式有點繞口,花費了我們蠻多心思。 Lexical Scopping: The value of free variables are

Coursera系列-R Programming第二週

--- 好久沒發部落格 且容我大吼一句 終於做完這周R Programming的作業了! 之前一直有報coursera的課程,但是總是沒有堅持下去,這次收到他們的郵件推廣,說data science系列課程開通了R語言的中文課程,有中文版論壇,有中文字幕,如此誠意滿滿,再不報名,就實在太落伍了。

[Johns Hopkins] R Programming 作業 Week 2 - Air Pollution

mod eat contain spec mat tin then match front Introduction For this first programming assignment you will write three functions that a

Coursera課程 Programming Languages, Part B 總結

pos 計算 但是 for 我們 org 情況 再計算 fec Programming Languages, Part A Programming Languages, Part B Part A 筆記 碎言碎語 很多沒有寫過 Lisp 程序的人都會對 Lisp 中的

[R] [Johns Hopkins] R Programming -- week 3

orm rec lse 是否 ola 停止 true 可能 func library(datasets) head(airquality) #按月分組 s <- split(airquality, airquality$Month) str(s) summary(

R語言常用包分類總結

arr const poisson string arm ova 處理 port 線性規劃 常用包: ——數據處理:lubridata ,plyr ,reshape2,stringr,formatR,mcmc; ——機器學習:nnet,rpart,tree,party,la

Python3練習題系列(06)——各種符號總結

變量 import from add def lsp back 浮點型 bsp Python3中的各種符號總結 1關鍵字 import keyword print(keyword.kwlist, end=‘\t‘) [‘False‘, ‘None‘, ‘True‘

夯實基礎系列二:網絡知識總結

tag 程序 ger 網上 缺陷 dir 成了 可能 導致 前言 無論是 C/S 開發還是 B/S 開發,無論是前端開發還是後臺開發,網絡總是無法避免的,數據如何傳輸,如何保證正確性和可靠性,如何提高傳輸效率,如何解決會話管理問題,如何在網絡擁堵環境下采取措施。這些都是需要

Java中final的用法總結

++ 標識符 ali 相同 即使 調用方法 理由 new 3.1 1. 修飾基礎數據成員的final 這是final的主要用途,其含義相當於C/C++的const,即該成員被修飾為常量,意味著不可修改。如java.lang.Math類中的PI和E是final

小白學習Spark系列四:rdd踩坑總結

build .text 大數據分析 遇到 ESS bstr 分隔符 讀取配置 關註   初次嘗試用 Spark+scala 完成項目的重構,由於兩者之前都沒接觸過,所以邊學邊用的過程大多艱難。首先面臨的是如何快速上手,然後是代碼調優、性能調優。本章主要記錄自己在項目中遇到的

coursera Machine Learning: Programming Exercise 1

2. Linear regression with one variable (一個變數的線性迴歸) 2.1 Plotting the data data = load('ex1data1.txt'); % read comma separated data X = data(:,

【備戰春招/秋招系列】美團面經總結基礎篇 (附詳解答案)

該文已加入開源文件:JavaGuide(一份涵蓋大部分Java程式設計師所需要掌握的核心知識)。地址:github.com/Snailclimb/…. 【強烈推薦!非廣告!】阿里雲雙11褥羊毛活動:m.aliyun.com/act/team111… 差不多一折,不過僅限阿里雲新人購買,不是新人的朋

spring-boot-2.0.3不一樣系列之源碼篇 - 階段總結

led gpo otl 開始 ted source rand java類 nal 前言  開心一刻     朋友喜歡去×××,第一次推門進來的是一個學生美眉,感覺還不錯;後來經常去,有時是護士,有時是空姐,有時候是教師。昨天晚上推門進去的是一個女警察,長得賊好看,身材也很好

BAT資深演算法工程師「Deep Learning」讀書系列分享(一) | 分享總結

本文轉載自:https://www.leiphone.com/news/201708/LEBNjZzvm0Q3Ipp0.html 雷鋒網 AI 科技評論按:「Deep Learning」這本書是機器學習領域的重磅書籍,三位作者分別是機器學習界名人、GAN的提出者、谷歌大腦研究科學家 Ian

dubbo系列二:dubbo常用功能總結

準備工作: (1)啟動zookeeper作為dubbo的註冊中心 (2)新建一個maven的生產者web工程dubbo-provider-web和一個maven的消費者web工程dubbo-consumer-web (3)在pom.xml檔案裡面引入如下依賴 <project xmlns="http:

Machine Learning week 4 總結

Multivariate Linear Regression 問題可以由函式表示 函式,本質上就是兩集合的一種對映關係,從輸入值,得到輸出值。同時函式,也是現實世界的一種抽象表示,就如原因對應結果,事件A對應事件B。通常我們只要給一個問題建立起比較好的數學模型,

【原】Coursera—Andrew Ng機器學習—Week 8 習題—聚類 和 降維

【1】無監督演算法 【2】聚類 【3】代價函式 【4】 【5】K的選擇 【6】降維 Answer:本來是 n 維,降維之後變成 k 維(k ≤ n) 【7】 【8】 Answer: 斜率-1 【9】   Answer: x 是一個向

Andrew Ng's Coursera Machine Leaning(ML) Notes Week 3

Andrew Ng’s Coursera Machine Leaning(ML) Notes Week2 Author: Yu-Shih Chen December 22, 2018 6:55 PM Intro: 本人目前是在加州上大學的大二生,對人工智慧和資料科學有濃厚的興趣所以在

Andrew Ng's Coursera Machine Leaning(ML) Notes Week 2

Andrew Ng’s Coursera Machine Leaning(ML) Notes Week2 Author: Yu-Shih Chen December 20, 2018 1:10AM Intro: 本人目前是在加州上大學的大二生,對人工智慧和資料科學有濃厚的興趣所以在上