为什么以下代码会生成
x=10:14
for (i in x) {
print(x)
}
此输出
[1] 10 11 12 13 14
[1] 10 11 12 13 14
[1] 10 11 12 13 14
[1] 10 11 12 13 14
[1] 10 11 12 13 14
我认为for循环会执行5次。这适用于x=10,x=11,x=12,x=13,x=14
,并且每次都打印x
,以便它只输出10 11 12 13 14
。
为什么循环25次?
我是R的新手。所以有人可以告诉我这里发生了什么
答案 0 :(得分:0)
您首先定义了一个序列x <- 10:14
。由于你是R的初学者,值得指出的是,将=
用于作业一般被认为是不好的做法,尽管R容忍这种“方言”,这种方言通常由没有经验的R程序员使用。其他编程语言。
无论如何,在这种情况下,你的循环变量是i
。循环运行五次,因为i
的值遍历x
定义的范围,即10,11,12,13,14。
但是,在循环中,您永远不会使用i
的值。例如,您可以像上面的评论中所建议的那样简单地使用print(i)
,并查看值如何从10更改为14.相反,您每次都打印x
的值,这是一个在循环外定义的向量,永远不会改变。此向量x
包含五个元素10,11,12,13,14,每次调用函数print(x)
时都会显示这些元素。由于x
包含五个数字,因此您的输出中总共会获得25个打印数字。
总之,你的循环打印包含五个元素的相同向量的五倍。 希望这会有所帮助。
答案 1 :(得分:0)
它按预期工作,应该使用其他语言
让我们看一个例子 在java中:
List<Integer> y=Arrays.asList(10,11,12,13,14);
for(int i : y)
{
System.out.println(y);
}
它会做同样的事情。为i = 10,11,12,13,14的值打印完成List y的值各5次。这是输出
[10, 11, 12, 13, 14]
[10, 11, 12, 13, 14]
[10, 11, 12, 13, 14]
[10, 11, 12, 13, 14]
[10, 11, 12, 13, 14]
在R中也是如此。如果你想在x中打印元素列表,你可以做任何一个
x<-10:14
for (i in x) {
print(i)
}
它会起作用,因为我自己正在经历x的值。
或者如果你想与其他编程语言联系,你可以这样做。
x<-10:14
for (i in seq_along(x)) {
print(x[i])
}