在R中循环使用交替对象值

时间:2014-07-17 20:34:19

标签: r

我试图在R中创建一个循环,允许我在循环中更改对象的值。 下面是一个简单的例子来指出我的意思。 Print(x)代表相当广泛的代码,其中某些计算需要x的值。然而,虽然解决方案#1在纸上工作,但它在此上下文中不可用(因为子循环)。有没有办法在R中设计一个类似于解决方案#2的循环?非常感谢提前!

1> x <- 1           
2> while (x == 1)
3> {
4> print(x)
5> x <- 2
6> print(x)
7> x <- 3
8> print(x)
9> x <- 4
10> print(x)
11> if (x == 4)
12> break
13> }

输出 1 2 3 4

1> x <- 1
2> while (x == 1 || x == 2 || x == 3 || x == 4)
3> {
4> print (x)
5> x <- 2
   #jump to line 2, ignore line 5, proceed with line 6
6> x <- 3
   #jump to line 2, ignore line 6, proceed with line 7
7> x <- 4
   #jump to line 2, ignore line 7, proceed with line 8
8> if (x == 4)
9> break
10> }

输出 1 2 3 4

3 个答案:

答案 0 :(得分:1)

要说出你想做什么有点难,但我也会给出一个机会。所以你首先可能想要编写一个取值为x的函数并根据x的值进行计算(就我从你的例子中得到的那样,计算/循环不是所有x)都相同。

x <- 1:4

fct <- function(x) {
    if (x==1){
        y <- x^2
    }
    if (x==2) {
        y <- x + 2
    }
    if (x>2 & x < 5) {
        y <- x*3 + 4
    }

    return(y)
}   

现在循环x

sapply(x, fct)

这就是你想要的吗?

答案 1 :(得分:0)

我不确定它会起作用,因为它不清楚你想要做什么,但是你可以尝试将所有要运行的值放入矢量中吗? ?像这样:

my_values <- c(1,2,3,4)
for(x in my_values) {
     print(x)
}

编辑:

我可能完全无用,但你是否也从RODBC获得了下一把钥匙?如果是这种情况,假设您可以使用功能get_next_key获取下一个密钥,并使用get_data获取数据。如果没有更多的密钥(即你之前有最后一个密钥),我还假设get_next_key返回NA。那会有用吗?

x = 1
while(!is.na(get_next_key(x))) {
     data = get_data(x)
     print(data)  
     x = get_next_key(x)
}

答案 2 :(得分:0)

这首先明显只适用于x的整数增量:

x <- 1
while (x <= 4){
    print(x)
    x <- x+1
}

对于x的任意值:

x1 <- c(1, 2, 3, 4)
### index x1 and move along this;
### at each step assign the value to y1 then 
### do something with (print) it
for (i in seq_along(x1)) print(y1 <- x1[i])

这里的for循环没有什么问题,有时比apply更容易阅读