为了账号安全,请及时绑定邮箱和手机立即绑定

使用所有向量元素的组合粘贴两个向量

使用所有向量元素的组合粘贴两个向量

慕少森 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条经验 获得超5个赞

要保持问题中请求的字符串的顺序,可以对这两种方法使用以下两种修改:


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


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 关注
  • 545 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信