粘贴和序列的一些简单问题

时间:2018-07-16 08:03:08

标签: r paste

我正在尝试通过粘贴创建一些列名称。我认为这很简单,但是我不知道可以用于我的目的的功能

假设我有以下矩阵:

X <- matrix(rnorm(100,1,1), ncol=10)
colnames(X)=NULL

预期输出应为:

colnames(X) <- c("l1.1", "l2.1", "l3.1", "l4.1", "l5.1", "l1.2", "l2.2", "l3.2", "l4.2", "l5.2")

但是以一种非常通用的方式为高维目的分配此结构。特别是我有5个变量(第一个数字),第二个数字指定了变量的滞后数字

2 个答案:

答案 0 :(得分:3)

paste0("l", rep(1:5, times = 2), ".", rep(1:2, each = 5))
 [1] "l1.1" "l2.1" "l3.1" "l4.1" "l5.1" "l1.2" "l2.2" "l3.2" "l4.2"
[10] "l5.2"

可以缩写为(由于回收):

paste0("l", 1:5, ".", rep(1:2, each = 5))

但是我更喜欢sprintf()的逻辑:

sprintf("l%d.%d", 1:5, rep(1:2, each = 5))

还有一个称为胶水的新包装:

library(glue)
glue("l{n1}.{n2}", n1 = rep(1:5, times = 2), n2 = rep(1:2, each = 5))

答案 1 :(得分:2)

这是您要找的吗?

paste0("l", rep(seq(1,5,1),2), ".", rep(seq(1,2,1), each=5))
  

[1]“ l1.1”“ l2.1”“ l3.1”“ l4.1”“ l5.1”“ l1.2”“ l2.2”“ l3.2”“ l4.2 ”   “ l5.2”