将列名定义为R中重复字符串和向量的组合

将列名定义为R中重复字符串和向量的组合,r,matrix,vector,R,Matrix,Vector,我想使用字符串和行长度向量来命名矩阵的列。例如: k<-c(5:15) xMin = 3 xMax = 15 x<-c(xMin:xMax) M<-matrix(, nrow = length(x), ncol = length(k)) 其中字符串应为“S”。 显然,不起作用的是: N=NULL N<- as.vector(N) m=1 for (m in length(k)) { N[m]<-paste0("s_",k[m]) } N 我可以很容易地

我想使用字符串和行长度向量来命名矩阵的列。例如:

 k<-c(5:15)
 xMin = 3
 xMax = 15
 x<-c(xMin:xMax)
 M<-matrix(, nrow = length(x), ncol = length(k))
其中字符串应为“S”。 显然,不起作用的是:

N=NULL
N<- as.vector(N)
m=1
for (m in length(k))
{
N[m]<-paste0("s_",k[m])
}
N
我可以很容易地使用它:

colnames(M)<-N

colnames(M)此操作不需要循环<代码>粘贴
已矢量化

k = seq(from = 5, to = 15)
paste("s", k, sep = "_")

但是,如果您对循环失败的原因感到好奇,那是因为除了
length
的结果之外,您实际上没有循环任何内容。因此,其他向量元素中的
NA
值。对于一个循环,您需要迭代一些东西。在这种情况下,您可以使用一些简单的方法,如
seq(length(k))
seq\u

for (m in seq_along(k))
{
  N[m]<-paste0("s_",k[m])
}
用于(沿(k)方向的m)
{

N[m]
paste(“s”,seq(from=5,to=15),sep=“”)
感谢您的帮助。因为我不想将序列与from和to一起使用,因为我的向量k可以有各种输入,这些输入可能不是顺序的。但是使用seq(长度(k))进行迭代我得到了我需要的。再次感谢。@LxndrF你可以直接使用
k
是的,谢谢。我得到了。因为(m在seq(length(k))中){N[m]
k = seq(from = 5, to = 15)
paste("s", k, sep = "_")
paste0("s_", k)
for (m in seq_along(k))
{
  N[m]<-paste0("s_",k[m])
}