【发布时间】:2013-04-16 19:38:58
【问题描述】:
我想创建几个矩阵并将通过函数获得的值自动分配给特定的行。我将举例说明我到目前为止所尝试的内容:
EXAMPLE1<-matrix(ncol=4, nrow=16)
EXAMPLE2<-matrix(ncol=4, nrow=16)
EXAMPLE3<-matrix(ncol=4, nrow=16)
EXAMPLE4<-matrix(ncol=4, nrow=16)
for(i in 1:16){
for(j in 1:4){
paste0("EXAMPLE",j, "[",i,",","]")<- c(1:4)
}
}
和
for(i in 1:16){
for(j in 1:4){
get(paste0("EXAMPLE",j)[i,]<- c(1:4)
}
}
但返回“赋值目标扩展为非语言对象”。所以我尝试了
for(i in 1:16){
for(j in 1:4){
assign(paste0("EXAMPLE",j, "[",i,",","]"), c(1:4))
}
}
这不会返回错误,但值不会写入矩阵。
起初矩阵是空的
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
并且在执行一个循环之后 (i=1) 我将所有的示例矩阵都填充为 1 行(并且在第二 - 第二行填充之后,这样当循环结束时,我将拥有一个充满数字的示例矩阵。 )。
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
重点是,我不知道如何为矩阵行赋值,因为我通过粘贴函数传递矩阵名称。如果我想将其名称作为字符串,如何将值分配给矩阵中的特定行?任何帮助都会很棒。谢谢
...版本... 很抱歉我不是很清楚。正如我所提到的,我想将函数的结果(恰好与我的矩阵具有相同的列数)写入矩阵行。每行都会从应用于不同观察的函数中获取结果。我想将几个函数应用于同一个变量,所以我有几个矩阵用于不同函数的结果(它们的列号不同并且具有不同的名称)。我对矩阵进行编号和命名的方式是最容易跟踪结果并在以后进行比较的方式。上面我只给出了一个问题示例,即我不能为一行矩阵赋值,因为我将矩阵的名称作为字符串给出(我这样做是因为否则会有很多编号要做)。所以总的来说我希望能够做到
EXAMPLEj[i,]<-SomeFunctionResult
j 是 1 到 10 或其他数字的地方
这就是为什么我使用循环和paste0("EXAMPLE", j) 来生成矩阵的名称,并使用 i 来表示要使用哪个观察函数以及将结果放在哪一行。矩阵已经创建,但我发现无法将结果传递到矩阵的行。
我是 R(和编程)的新手,所以我可能选择了最糟糕的方法来解决这个问题,并且列表或数组会更容易使用。感谢您的回复。
【问题讨论】:
-
你能给出你想要的结果吗?
-
您是否尝试在列上创建一个带有
1,2,3,4的矩阵并为所有行重复它? -
不清楚你想做什么!试着展示你想用一个矩阵做什么。那么我认为最好将你的变量放在一个列表中,并使用
do.call或lapply来概括你对单个矩阵所做的事情。
标签: r