保存循环';在R中的向量中的s输出

保存循环';在R中的向量中的s输出,r,loops,if-statement,R,Loops,If Statement,我有一个.cvs文件,它由4列和120行组成。 我试图遍历每一行,如果我在第三列中看到一个“1”(这里称为“Dam”),我想将该行保存在一个名为“Dam.one”的矩阵中 以下是我目前的代码: DamType = c( "Dam.one", "Dam.two", "Dam.three", "NoDam.one", "NoDam.two", "NoDam.three") for (i in 1:120) { if (mercury.raw[i,]["Dam"] == 1) {

我有一个.cvs文件,它由4列和120行组成。 我试图遍历每一行,如果我在第三列中看到一个“1”(这里称为“Dam”),我想将该行保存在一个名为“Dam.one”的矩阵中

以下是我目前的代码:

DamType = c( "Dam.one", "Dam.two", "Dam.three", "NoDam.one", "NoDam.two", "NoDam.three")

for (i in 1:120) {
    if (mercury.raw[i,]["Dam"] == 1) {
        if (mercury.raw[i,]["Type"] == 1){
            DamType["Dam.one"] <-  mercury.raw[i,]  
}}}
我希望
DamType[“Dam.one”]
等于:

                 Lake Mercury Dam Type
1                ALLEN.P   1.080   1    1
2            ALLIGATOR.P   0.025   1    1
我不知道它出了什么问题。
非常感谢您的帮助。

矩阵不能存储在向量中。列表可以存储多个矩阵(本例中为数据帧)。看起来您正在尝试对数据进行子集划分,不需要为循环设置

DamType <- list()
DamType[["Dam.one"]] <- mercury.raw[mercury.raw$Dam == 1 & mercury.raw$Type == 1, ]

> DamType$Dam.one
         Lake Mercury Dam Type
1     ALLEN.P   1.080   1    1
2 ALLIGATOR.P   0.025   1    1

DamType我建议更多地熟悉R和常见的包,比如dplyr

library(dplyr)
dam_grouped <- mercury.raw %>% group_by(Dam)
库(dplyr)
dam_按%group_分组(dam)

我也不知道。你能解释一下你的错误吗?也许还可以告诉我们什么是水星原汁原味?看到了吗?马诺萨克什么?他没有名为Dam的变量。一个
“Dam”==1
总是计算为
FALSE
@dash2我输入了错误的
DamType
,而不是
mercury.raw
。从他的问题中,他在第三栏(“Dam”)中搜索他看到的
1
。我假设有时他没有一个,真的只是想对他的数据进行子集。DamType是一个字符向量,DamType[“Dam.one”]
应该是什么?我添加了更多信息。我希望这能使我的问题更清楚。
library(dplyr)
dam_grouped <- mercury.raw %>% group_by(Dam)