D02-R語言基礎學習

来源:https://www.cnblogs.com/zhangkanghui/archive/2019/04/23/10692148.html
-Advertisement-
Play Games

R語言基礎學習——D02 20190423內容綱要: 1、前言 2、向量操作 (1)常規操作 (2)不定長向量計算 (3)序列 (4)向量的刪除與保留 3、列表詳解 (1)列表的索引 (2)列表得元素屬性 (3)更改列表元素 (4)刪除列表元素 (5)合併兩個列表 (6)將列表轉換為向量 4、推薦 ...


R語言基礎學習——D02

20190423內容綱要:

   1、前言

  2、向量操作

    (1)常規操作

    (2)不定長向量計算

    (3)序列

    (4)向量的刪除與保留

  3、列表詳解

    (1)列表的索引

    (2)列表得元素屬性

    (3)更改列表元素

    (4)刪除列表元素

    (5)合併兩個列表

    (6)將列表轉換為向量

  4、推薦

 

1、前言

怕什麼真理無窮,進一寸有進一寸的歡喜。

先隨便玩點什麼?

>ls()
#ls查看當前創建的變數,沒有。那我們創建幾個變數
>data <- c(1,2,3,4)
>string <- "I like R"
>ls()
#那麼如果想刪除變數呢
>rm(data)
>ls()

 

感覺跟linux命令太像了!有時間把linux的學習筆記整理一下!!!

下麵說兩個小技巧:

#(1)換行。
# 不要把一句話輸完,缺一個括弧啊什麼的,回車它會顯示一個“+”號,這樣就可以接著寫語句,算是換行了
>mylist <- list(stud.id=1234,
+ stud.name="Tom",
+ stud.marks=c(12, 3, 14, 25, 18))
#(2)清屏
Ctrl + L

 

 

2 向量操作

(1)常規操作

# 創建向量
>a <- c(1,2,3,4)
#(1)查看長度length
>length(a)
#(2)查看類型mode
>mode(a)
#(3)數字類型強行轉成字元型
>c <- c(1,2,3, "r")
>mode(c)
#(4)更改向量中的元素
>c[2] <- "test"
>c
#5)可以對向量中的每一個元素都求平方根
 >x <- c(4,8,6,7)
>y <- sqrt(x)
#(6)對向量進行加減計算當兩個長度不等的向量相加會是怎樣的呢???
>z <- x + y

 (2)不定長向量計算

#(7)當兩個長度不等的向量相加,不是補零,而是將短的迴圈與長的加一起!python中的廣播?
#不同長度的向量相加時需要特別註意長的對象長度不是短的對象長度的整倍數
> x <- c(1, 1, 1, 1, 1) > y <- c(2, 2, 2) > z <- x + y Warning message: In x + y : 長的對象長度不是短的對象長度的整倍數 > x <- c(1, 1, 1, 1, 1, 1) > y <- c(2, 2, 2) > z <- x + y > z [1] 3 3 3 3 3

(3)序列

#(8)生成序列
#生成序列,從1開始10結束,步長為2
> x <- seq(1,10,2)
> x
[1] 1 3 5 7 9
#生成迴圈序列,序列數5,迴圈10
> x <- rep(5,10)
> x
 [1] 5 5 5 5 5 5 5 5 5 5
#生成迴圈序列,序列數1:3,迴圈3次
> rep(1:3, 3)
[1] 1 2 3 1 2 3 1 2 3
#生成10個均值為0,方差為1的隨機數
> rnorm(10)
 [1] -1.6103872 -1.3784579  1.8143056  0.7482350  2.5612867 -1.5183595 -0.6851633 -1.0225507  0.2810904  0.1618640
#生成6個均值為6,方差為2的隨機數
> rnorm(6, mean=6, sd=2)
[1] 5.792479 7.257183 7.816276 5.060411 6.039296 3.343846

(4)刪除和保留向量

#(9)刪除向量中的一個元素
> x <- c(0, -3, 4, -1, 45, 98, -12)
#只保留大於0的
> x[x>0]
[1]  4 45 98
#只保留小於等於2或者大於5的
> x[x<=-2 | x>5]
[1]  -3  45  98 -12
#不要第五個
> x[-5]
[1]   0  -3   4  -1  98 -12
#不要前三個
> x[-(1:3)]
[1]  -1  45  98 -12

 

3 列表詳解

首先創建一個列表。增刪改查都有。

> mylist <- list(stud.id=1234,
+ stud.name="Tom",
+ stud.marks=c(12, 3, 14, 25, 18))
> mylist
$stud.id
[1] 1234

$stud.name
[1] "Tom"

$stud.marks
[1] 12  3 14 25 18

(1)查列表的索引(切片)

首先,R語言中的列表的索引(切片)不太一樣,單、雙括弧都可以,提取的元素不一樣。

此外,不是從0開始!不是從0開始!不是從0開始!

 

> x <- 1:1000
> length(x)
[1] 1000

 

#第一種
> mylist[[1]]
[1] 1234
#第二種
> mylist[1]
$stud.id
[1] 1234
#第三種
> mylist$stud.id
[1] 1234

> mylist[[0]]
Error in mylist[[0]] : 
  attempt to select less than one element in get1index <real>

(2)查列表的元素屬性

#查看類型
>  mode(mylist[[1]])
[1] "numeric"
> mode(mylist[1])
[1] "list"

#查看名稱,其實也算是切片的一種。類似python中的字典,取key,上面的索引取value
> names(mylist)
[1] "stud.id"    "stud.name"  "stud.marks"

(3)更改列表元素

#添加元素
> mylist$parents <- c("man", "Jutice")
> mylist
$id
[1] 1234

$names
[1] "Tom"

$marks
[1] 12  3 14 25 18

$parents
[1] "man"    "Jutice"

(4)刪除列表元素

> length(mylist)
[1] 4
> mylist <- mylist[-4]
> mylist
$id
[1] 1234

$names
[1] "Tom"

$marks
[1] 12  3 14 25 18

(5)合併兩個列表

> other <- list(age=19, sex="male")
> other
$age
[1] 19

$sex
[1] "male"

> newlist <- c(mylist, other)
> newlist
$id
[1] 1234

$names
[1] "Tom"

$marks
[1] 12  3 14 25 18

$age
[1] 19

$sex
[1] "male"

(6)將列表變成一個向量unlist

> unlist(newlist)
    id  names marks1 marks2 marks3 marks4 marks5    age    sex 
"1234"  "Tom"   "12"    "3"   "14"   "25"   "18"   "19" "male" 

 

4、推薦

  其實最近最近關於R語言的學習斷了快半個月了,沒怎麼看這方面的。有時間整理一下PLC的資料!!!

推薦幾個python實戰項目吧。有時間可以試一試:別光說不做!!!

(1)python實戰項目 | python製作天氣查詢軟體  https://mp.weixin.qq.com/s/Yca8RM_ivxND48NVM4qffg

(2)python實戰項目 | python創建微信機器人  https://mp.weixin.qq.com/s/LQ_4GcI9c_MeBTpQKc7eAg

我是尾巴~

人生在世,需要一點高於柴米油鹽的品相!

別失去希望,再堅持一下!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 配置類: 調用: ...
  • 上一次我們已經通過代碼,簡單的認識了工廠方法模式,具體的思路請移步到 "設計模式之工廠模式(二)" ,進行查看。這次,讓我們通過設計模式的思想,來好好認識下工廠方法模式。 創建者和產品 所有工廠模式都用來封裝對象的創建。工廠方法模式(Factory Method Pattern)通過讓子類決定該創建 ...
  • log4j log4j log4j.rootLogger=INFO, stdout log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.app ...
  • 文章首發: "結構型模式:橋接模式" 七大結構型模式之二:橋接模式。 簡介 姓名 :橋接模式 英文名 :Bridge Pattern 價值觀 :解耦靠我 個人介紹 : Decouple an abstraction from its implementation so that the two ca ...
  • 前言: 這是一篇面向對象作業總結,作業內容是模擬電梯調度,一共有三個階段,具體要求不詳述,第一階段只要求先來先服務電梯,第二次支持捎帶,第三次則需要多部電梯協調,通過換乘來完成請求。本次作業在優化方面效果不佳。設計比較統一,設計原則檢查放在最後。 第5次作業 類圖如下: 說明: 具體的來說,M是主入 ...
  • 騰訊雲伺服器 點擊添加紀錄,紅色框框裡面填寫自己的公網IP即可。 阿裡雲上搭建php+mysql服務,並使用ftp將本地php文件及資料庫文件上傳到伺服器 先搭建php+MySQL環境 下載 "xampp" 。 XAMPP(Apache+MySQL+PHP+PERL)是一個功能強大的建站集成軟體包。 ...
  • @ "TOC" 1.變數 變數用於存儲要在電腦程式中引用和操作的信息。它們的唯一目的是在記憶體中標記和存儲數據。然後可以在整個程式中使用這些數據。變數存儲在記憶體中的值。這就意味著在創建變數時會在記憶體中開闢一個空間。 基於變數的數據類型,解釋器會分配指定記憶體,並決定什麼數據可以被存儲在記憶體中。因此,變 ...
  • NumPy: 1、NumPy 是一個功能強大的第三方庫(需要自己安裝),主要用於對多維數組執行計算; 它提供了大量的庫函數和操作,可以幫助程式員更輕鬆地進行數值計算 2、可以和另外兩個第三方庫 SciPy 和 Matplotlib 一起使用從而在一定程度上替換對 Matlab 的使用 3、主要應用: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...