亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用所有向量元素的組合粘貼兩個向量

使用所有向量元素的組合粘貼兩個向量

慕少森 2019-10-19 14:41:40
我有兩個向量:vars <- c("SR", "PL")vis <- c(1,2,3)基于這些向量,我想創建以下向量:"SR.1"  "SR.2"  "SR.3"  "PL.1"  "PL.2"  "PL.3"與paste我有以下結果:paste(vars, vis, sep=".") [1] "SR.1" "PL.2" "SR.3"如何創建所需的向量?
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

您可以使用它,但是可能有一個更簡單的解決方案:


R> apply(expand.grid(vars, vis), 1, paste, collapse=".")

[1] "SR.1" "PL.1" "SR.2" "PL.2" "SR.3" "PL.3"

expand.grid還給一個data.frame與使用時apply,apply將其轉換為matrix。這只是不必要的(并且在大數據上效率低下)。outer給出一個matrix并且也接受函數參數。在海量數據上也將非常有效。


使用outer:


as.vector(outer(vars, vis, paste, sep="."))

# [1] "SR.1" "PL.1" "SR.2" "PL.2" "SR.3" "PL.3"


查看完整回答
反對 回復 2019-10-19
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

要保持問題中請求的字符串的順序,可以對這兩種方法使用以下兩種修改:


更改向量的順序并以相反的順序合并


apply(expand.grid(vis, vars), 1, function(x) paste(x[2], x[1], sep=".")) 

[1] "SR.1" "SR.2" "SR.3" "PL.1" "PL.2" "PL.3"

或在轉換為向量之前轉置矩陣:


as.vector(t(outer(vars, vis, paste, sep="."))) 

[1] "SR.1" "SR.2" "SR.3" "PL.1" "PL.2" "PL.3"


查看完整回答
反對 回復 2019-10-19
  • 3 回答
  • 0 關注
  • 647 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號