【发布时间】:2014-02-03 01:10:36
【问题描述】:
每次运行函数时,我都会尝试将新行附加到矩阵中。我认为,第一次运行该函数时会创建一个矩阵,随后会添加一个带有值的新行。
这是一些虚拟数据。假设x 和y 是矩形的边,z 是某种ID。实际上,这些不是事先知道的,而是由函数输出的。真正的函数将物种目录作为参数,读取形状文件,合并多边形并做很多其他事情,但输出表面积。对于每个物种(即函数运行),我想将每个输出区域存储在矩阵或 data.frame 中以供进一步分析,而不是将其输出到单个变量。
myfunc <- function(x, y, z){
area <- x*y
id <- z
tmp <- cbind(area,id)
assign(as.matrix('mtrx'), rbind(tmp), envir=.GlobalEnv)
}
上面显然只创建矩阵并在每次运行函数时覆盖它。
任何指针将不胜感激!
【问题讨论】:
-
第一个参数也需要是要分配的对象的名称。为什么要将字符串转换为字符矩阵?这
assign('mtrx', ....)有效吗? -
矩阵
mtrx在你运行函数后创建... -
好的,但我的意思是
assign的第一个参数是您想要分配的名称的字符向量,而不是矩阵。阅读?assign。 -
我相当肯定这段代码不是你想要做的:
as.matrix('mtrx')。它碰巧起作用,因为您正在创建一个维度为1 x 1的字符矩阵,该矩阵被强制转换为一个长度为1的向量。但这肯定不是(我猜)你想要的