r-用于字符值上的循环迭代



我是R的新手,试着习惯循环。我目前正在解决几个练习题,而我目前正被困在这个练习题上;

我有一个矢量

v <- sample(c("cat", "dog", "mouse"), 100, replace = TRUE);

现在的问题是创建一个for循环,它遍历"v"的所有值,打印到那时为止找到了多少dog值。当达到第五个"dog"值时,您应该停止。(在相应的打印之后(。使用break。

首先,我无法产生第一次迭代,在第一次迭代中,我产生了类似"1 n_dogs found"的输出。此外,我不知道如何计算找到的"狗"的数量,并在打印第五个"狗"值后打破循环。经过几次尝试,我在这里结束了(这并没有提供任何接近所需输出的东西(

for (index in 1:length(v)){
if (v[index] == "dog"){
print(sprintf("%s n_dogs found", v[index]));
break;
} else {
print(sprintf("%s n_dogs found", v[index]));
}
}

我知道这是非常基本的,但任何帮助都将不胜感激。

v <- sample(c("cat", "dog", "mouse"), 100, replace = TRUE)
counter <- 0
for (value in v) {
if (value == "dog") {
counter <- counter + 1
print(sprintf("%s n_dogs found", counter))
}
if (counter == 5) {
break
}
}

你可以用一个简单的计数器。我还用for each替换了传统的循环。你不需要打破,这只会计算到dog的第一次出现。如果您只需要最后一个数字,那么在循环中增加计数器并简单地打印到外部。

我想你可以试试下面的代码,其中一旦找到第五个"dog",for循环就会终止

ndog <- 0
for (x in v) {
if (x == "dog") {
ndog <- ndog + 1
print(sprintf("%s n_dogs found", ndog));
}
if (ndog == 5) break
}

最新更新