以下所有内容均在R中进行。
我试图将for循环结果的结果存储在不同的容器中,但是不知何故,我一直以NA警告告终,并且结果 not 未存储在我的容器中。甚至为函数中的不同for循环尝试了不同的容器,然后尝试了用于容器的矩阵,但似乎不起作用。
已经尝试了整整两天的不同解决方案,而且似乎应该有一个如此简单的解决方案。也许我自己再也看不到了...
int n = int.Parse(txt_input.Text);
var sb = new StringBuilder();
for (int j = 0; j < n; j++)
{
sb.Append('X');
}
sb.AppendLine();
for (int i = 0; i < n - 2; i++)
{
sb.Append('X');
for (int j = 0; j < n - 2; j++)
{
sb.Append(' ');
}
sb.Append('X');
sb.AppendLine();
}
for (int j = 0; j < n; j++)
{
sb.Append('X');
}
lbl_output.Text = sb.ToString();
答案 0 :(得分:0)
似乎您在使用R中的函数时遇到了一些麻烦。在R中,函数具有自己的环境(即,它们自己的对象集)。即使他们可以从其父环境(所有对象的集合)中读取,也无法在其上进行写操作。让我用一个简单的代码演示一下。
teste2=matrix(,2,2)
teste=function(a,b) {teste2[,1]=c(a,b)}
teste(3,2)
teste2
[,1] [,2]
[1,] NA NA
[2,] NA NA
如您所见,teste(函数)无法更改teste2(矩阵)。
在R中,创建函数的最佳方法是将所需的所有对象作为参数提供给它,并在函数主体的末尾给出单个return()
函数,该函数给出最终对象。 / p>
您所做的事情差不多,但是使用了多个return()
函数。 R仅使用第一个return()
,而忽略其余的。见下文:
teste=function(a,b) {c=a;return(c);d=b;return(d)}
teste(3,2)
[1] 3
对于您的特定代码,我建议排除所有result.container <-,并仅在最后一个(列表)末尾放置return()