我想使用R循环生成一个矩阵(出于其他原因,我不想在这种情况下使用向量,这将适用于outer()
),这样列标记为对应于循环迭代的对i
,j
。例如,(1,3)
。
我习惯在循环外部启动向量,并为其分配NA
或0
。我知道提前确定尺寸更有效。但是我不想在这种类型的更复杂的问题中确定维度,并且在循环内我不知道如何填充向量。通常我会将其编码为vector[i] <- new value to add
,但在这里我正在处理两个索引i
和j
,如果我将其编入索引vector[i,j] <- new value to add
我相信R会混淆思考矩阵。
以下是非工作代码:
x1=c(1,4,2,5,6)
x2=c(5,3,7,7,8)
data=data.frame(x1,x2)
data=as.matrix(data)
n = 6 # polynomial degree
for(i in 1:n){
for(j in 0:n){
data = cbind(data,data[,1]^(i-j) * data[,2]^j)
colnames(data) = paste("(",i,",",j,")")
}
}
data
答案 0 :(得分:1)
最简单的答案是改变
colnames(data) = paste("(",i,",",j,")")
到
colnames(data)[ncol(data)] = paste("(",i,",",j,")")
因为您只想更改最后一列(最近添加的一列)。