循环浏览R

时间:2017-02-19 04:22:29

标签: r for-loop

我从调查中收集了数据。 csv文件看起来像这样。

1c x x 1e x x 2c x x 2e x x 

D  x x D  x x R  x x R  x x 

R  x x R  x x D  x x D  x x 

D  x x D  x x R  x x R  x x 

R  x x R  x x R  x x R  x x 

等等...

x表示此分析中未使用的其他数据。

1c和1e(或任何配对列)的响应应该相同。它是作为操纵检查完成的,以测试参与者是否正在关注。我想计算“D”的数量和“R”的数量,但如果配对的列不匹配,则不会计算。

现在我正在做这样的事情:

final <- read("data.csv")


   for(i in 1:length(rownames(final))){
      if(final$X1c[i] == final$X1e[i]){
        count <- append(count, as.character(final$X1c[i]))
      } 
    }
   for(i in 1:length(rownames(final))){
      if(final$X2c[i] == final$X2e[i]){
        count <- append(count, as.character(final$X2c[i]))
      } 
    }

然后一直打开。

我该如何做到这一点,以便我不必为每个问题都有一个单独的for循环?

1 个答案:

答案 0 :(得分:0)

你可以在循环中简单地使用两个不同的计数器来捕获这两个计数(或者无论多少计数):

final <- read("data.csv")


   for(i in 1:length(rownames(final))){
      if(final$X1c[i] == final$X1e[i]){
        count <- append(count, as.character(final$X1c[i]))
      if(final$X2c[i] == final$X2e[i]){
        count2 <- append(count2, as.character(final$X2c[i]))
      } 
      } 

但我会在count&amp;的循环之外创建一个或多个初始表。 count2

如果你有大量的变量,你可以创建一个列表,表格或其他一对对矢量,发送到嵌套循环中,迭代要对的列对。

但是,如果您有兴趣获得的是具有多个列列的列对中的d == d的总次数以及每个列对中可能的因子,您可以考虑使用dplyr包。

如果您使用group_by收集两列,然后使用带有某些逻辑的summarize()filter来获取每组值的等效对,则可以创建表格计算它们相同的位置。

这是一个以这种方式使用dplyr的好链接:

dplyr tutorial using mtcars dataset