我正在尝试通过粘贴创建一些列名称。我认为这很简单,但是我不知道可以用于我的目的的功能
假设我有以下矩阵:
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个变量(第一个数字),第二个数字指定了变量的滞后数字
答案 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”