R: vector 向量的創建、操作等。
###################################################
問題:創建、操作向量 18.4.27
怎麽創建向量 vector,,及其相關操作 ???
解決方案:
a <- 3; 或 a=3 #單數據變量
a * 2; sqrt(a); #單數據變量的簡單運算
a2 = seq(1:8); a2 #生成等差序列 #[1] 1 2 3 4 5 6 7 8
vec1 = seq(from=0,to=9,by=2); vec1 ##[1] 0 2 4 6 8
vec2 = rep(vec_1,2); vec2 #生成重復序列 # [1] 0 2 4 6 8 10 0 2 4 6 8 10
vec3 = rep(vec_1,each=2); vec3 ## [1] 0 0 2 2 4 4 6 6 8 8 10 10
vec4 = rep(vec_1,c(1,2,3,3,2,2)); vec4 #[1] 0 2 2 4 4 4 6 6 6 8 8 10 10
link <- c(vec1,100:105,vec1) #[1] 0 2 4 6 8 100 101 102 103 104 105 0 2 4 6 8
#c()函數可以連接不同的變量,生成一個新的變量。
vec = vector(length=6); vec #[1] FALSE FALSE FALSE FALSE FALSE FALSE
# vector 函數生成一個長度為 length 的空向量,元素為FALSE。可逐個賦值。vector 函數可用來代替 c 函數。
#相關操作:
#查詢元素
vec1[3]; # 返回索引為 3 的元素
vec1[-3]; # 返回除了索引為 3 的其他所有元素
vec1[2:4]; #返回索引為 2-4 的元素
vec1[c(2,4)]; #返回指定的,索引為 2和4 的元素
vec1[vec1 > 5] #返回所有值大於5的元素。
vec1[which(vec1 > 5)] #同上,,返回所有值大於5的元素
vec1[vec1 %in% c(1,2,5,"b")] #返回一個邏輯向量,長度同vec1,vec1中元素在c(),中則為 TRUE.
length(vec1); #返回向量長度,可結合上行篩選條件。
#編輯向量
x[x=2] <- 12; ## 將x的第1個為2的元素 變為12
x[x==2] <- 12; ## 將 x 中,所有為2的元素 變為12
sum(vec1); ## sum min max mean median var sd 均可以如上應用。
#如果變量中有缺失值,需要添加參數na.rm=TRUE,其默認為FALSE。 計算 sum min max mean median 時,
#而有的內置函數用 na.action=TRUE,處理缺失值。還有用其他句式等,用前help (?)一下
append(v,10,after=3) #在第三個元素後面加入10,新向量 <- (原向量,新元素) ,添加元素的及合並向量
#如果向量 x 包括名稱: x[2]得到名字和值成對輸出,x[[2]]只輸出值。
which.max(x) # 找出最大元素的索引
which.min(x) # 找出大小的元素索引
which(x == 6.0) # 等於6.0的元素的索引
which(x > 5) # 大於5的元素的索引
討論擴展:
向量無橫豎之分。
另請參閱:
R: vector 向量的創建、操作等。