當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R vector 向量 - 創建、強製等


R語言 vector 位於 base 包(package)。

說明

A 向量R是一個原子向量,即原子類型之一,請參閱“詳細信息”,或者是類型 (typeof) 或模式list或者expression.

vector 生成給定長度和模式的 ‘simple’ 向量,其中 ‘simple’ 向量沒有屬性,即滿足 is.null(attributes(.))

as.vector 是一個泛型,嘗試將其參數強製轉換為 mode 模式的向量(默認值是強製轉換為最方便的向量模式):如果結果是原子的 ( is.atomic ),則所有屬性都將被刪除。對於mode="any",請參閱“詳細信息”。

如果 x 是指定模式的向量,除了名稱之外沒有任何屬性,is.vector(x) 返回TRUE。對於mode="any",請參閱“詳細信息”。

用法

vector(mode = "logical", length = 0)
as.vector(x, mode = "any")
is.vector(x, mode = "any")

參數

mode

命名原子模式的字符串或 "list""expression" 或(vector 除外) "any" 。目前, is.vector() 允許 mode 的任何類型(參見 typeof ),並且當模式不是 "any" 時, is.vector(x, mode) 幾乎與 typeof(x) == mode 相同。

length

指定所需長度的非負整數。對於 long vector ,即 length > .Machine$integer.max ,它的類型必須是 "double" 。提供長度不是 1 的參數是錯誤的。

x

一個R對象。

細節

原子模式為 "logical""integer""numeric" (同義詞 "double" )、 "complex""character""raw"

如果 mode = "any"is.vector 可能會返回 TRUE 對於原子模式, listexpression 。對於任何mode,如果x具有除名稱之外的任何屬性,它將返回FALSE。 (這與 S 不兼容。)另一方麵,as.vector 刪除所有屬性,包括原子模式結果的名稱。

為了mode = "any"和原子向量x,as.vector(x)全部剝離attributes(包括names),返回一個簡單的原子向量。
然而,當x是類型"list"或者"expression",as.vector(x)當前返回參數x不變,除非有as.vector方法用於class(x).

請注意,因子不是向量;而是向量。 is.vector 返回 FALSE ,而 as.vector 將因子轉換為 mode = "any" 的字符向量。

對於 vector ,給定長度和模式的向量。邏輯向量元素初始化為 FALSE ,數值向量元素初始化為 0 ,字符向量元素初始化為 "" ,原始向量元素初始化為 nul 字節,列表/表達式元素初始化為 NULL

對於 as.vector ,一個向量(原子或列表或表達式類型)。如果結果是原子模式,則所有屬性都會從結果中刪除,但對於列表或表達式結果通常不會。默認方法處理 24 種輸入類型和 12 個 type 值:大多數強製轉換的詳細信息均未記錄,並且可能會發生更改。

對於 is.vectorTRUEFALSEis.vector(x, mode = "numeric") 對於 "integer""double" 類型的向量可以為 true,而 is.vector(x, mode = "double") 隻能對於 "double" 類型的向量為 true。

as.vector() 的方法

as.vector 方法的編寫者需要注意遵循默認方法的約定。尤其

  • 參數 mode 可以是 "any" 、任何原子模式、 "list""expression""symbol""pairlist" 或別名 "double""name" 之一。

  • 返回值應該是適當的模式。對於mode = "any",這意味著原子向量或列表或表達式。

  • 應適當對待屬性:特別是當結果是原子向量時,不應有屬性,甚至名稱也不應存在。

  • is.vector(as.vector(x, m), m) 對於任何模式 m 都應該為 true,包括默認的 "any"

    目前這還沒有實現Rm == "any"x是類型list或者expression除了屬性names— 通常是(S3 或 S4)對象的情況(參見is.object) 是內部列表。

注意

as.vectoris.vectormethods 包中的正式類 "vector" 的含義截然不同,因此 as(x, "vector")is(x, "vector")

請注意,如果 is.vector(x) 為 true,則 as.vector(x) 不一定是空操作:任何名稱都將從原子向量中刪除。

非向量 mode s "symbol" (同義詞 "name" )和 "pairlist" 已被接受,但長期以來一直未記錄:它們用於實現 as.nameas.pairlist ,並且最好直接使用這些函數。這裏的所有說明都不適用於那些mode:請參閱首選形式的幫助。

例子

df <- data.frame(x = 1:3, y = 5:7)
## Error:
try(as.vector(data.frame(x = 1:3, y = 5:7), mode = "numeric"))

x <- c(a = 1, b = 2)
is.vector(x)
as.vector(x)
all.equal(x, as.vector(x)) ## FALSE


###-- All the following are TRUE:
is.list(df)
! is.vector(df)
! is.vector(df, mode = "list")

is.vector(list(), mode = "list")

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

cis.numericis.list

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Vectors - Creation, Coercion, etc。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。