【发布时间】:2019-12-06 07:13:19
【问题描述】:
我正在尝试在 R 中编写一个函数,该函数返回一个由 k 列组成的矩阵,其中 k 是一个函数参数。
这些列是通过循环在函数内部形成的,我使用 (assign(paste), i) 将它们命名为 col.1,...,col.i。到目前为止一切顺利,代码可以正确生成列向量。
函数中已经定义了向量,col.2 到 col.k。 X 也被定义为等于 col.1。
然后我尝试在函数中使用循环来 cbind() 列,如下所示:
for (i in 2:k){
X <- cbind(X, col.i)
}
错误信息是“object 'col.i' not found”。
我没有太多的编码经验,所以这可能是初学者的错误,但我会很感激任何建议。
【问题讨论】:
-
X <- cbind(X, get(col.i))怎么样 -
我不确定您要做什么,但这似乎不是正确的方法。就你的循环而言,最明显的错误是
cbind(X, col.i),它必须是cbind(X, paste0('col.', i)) -
快速解决方案:
get(paste0('col.', i)),然而,你应该重新考虑你解决这个问题的方法——用col.1、col.2、...对象弄乱你的命名空间并不是很好。即使将它们保存在list(col.1, col.2, col.3)之类的列表中,您也可以只提取l[[i]](已经更干净了) -
感谢 cmets,但我无法解决问题。我可以换一种说法吗?给定一组在函数中定义和命名的 k 个向量,其中 k 是函数参数,如何从这些向量创建矩阵?
标签: r