将IF循环中的值存储在向量中

时间:2016-05-23 03:50:13

标签: r

我正在获取bins.txt并将其数据保存在" data"中。我尝试打印它并正确打印。

data <- read.csv("bins.txt", header = FALSE)
for (n in 1:24060)
   {
   j=(data[n,])
    for (i in 1:20)
    {
      m=(i-1)*80
      n=(i*80)-1
      if(m<j && j<n)
      {        
        print (i)
      } 


    }
  }

我希望不打印(i)但是将i的值存储在某个向量中并将其打印在循环外部并将其传递给

obs="vector" 

有点像这样

1 个答案:

答案 0 :(得分:0)

不知道你的bins.txt是什么。由于我真的不喜欢嵌套循环,所以这里有一个建议:

(i)在条件检查中定义20对最小(或m)和最大(或j)值:

 m <- lapply(1:20, function(x) (x-1)*80)
 n <- lapply(1:20, function(x) (x*80)-1)

(ii)基于m和n的二十种组合,基于数据返回二十个向量的列表:

lapply(1:20, function(x) dat[m[[x]] < dat &  dat < n[[x]]])

假设您的数据是

dat <- seq(0, 1000, length.out=50)

返回的前六个向量是:

[[1]]
[1] 20.40816 40.81633 61.22449

[[2]]
[1]  81.63265 102.04082 122.44898 142.85714

[[3]]
[1] 163.2653 183.6735 204.0816 224.4898

[[4]]
[1] 244.8980 265.3061 285.7143 306.1224

[[5]]
[1] 326.5306 346.9388 367.3469 387.7551

[[6]]
[1] 408.1633 428.5714 448.9796 469.3878