R的for循环中的if/else语句-希望if语句包含多个可能的值

R的for循环中的if/else语句-希望if语句包含多个可能的值,r,if-statement,for-loop,R,If Statement,For Loop,我正在使用R,我正在尝试编写一个for循环来分析我的数据。我遇到的问题是,我的一些复制品被取样6次,一些被取样4次(我在培养,一些在4个时间点后死亡,另一些在整个实验过程中存活,被取样6次)。我只想在for循环中设置一个条件if/else循环,以切断NA值(对于该区域性未采样的点)。以下是我所拥有的: names <- colnames(culture_data) for(i in 1:72){ n <- as.factor(names[i]) chl.sub <

我正在使用R,我正在尝试编写一个for循环来分析我的数据。我遇到的问题是,我的一些复制品被取样6次,一些被取样4次(我在培养,一些在4个时间点后死亡,另一些在整个实验过程中存活,被取样6次)。我只想在for循环中设置一个条件if/else循环,以切断NA值(对于该区域性未采样的点)。以下是我所拥有的:

names <- colnames(culture_data)
for(i in 1:72){
    n <- as.factor(names[i])
    chl.sub <- subset(culture_data, select = n)
    if (n == c("X1", "X2", "X3", "X10", "X11", "X12", "X37", "X38", "X39", "X46", "X47", "X48"))
        chl.sub <- as.matrix(chl.sub[1:4,])
        data <- (data.frame(time_newAgNP, chl.sub))
        }
    else {
        data <- (data.frame(time, chl.sub))
        }

names如果您试图创建两个数据集,一个数据集只包含不缺少观测值的列,另一个数据集只包含缺少观测值的列,可能类似于这样的操作:

a <- matrix(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,NA,NA,19,20,NA,NA,21,22), nrow=6, byrow=T)
a

zz <- which( !(is.na( colSums(a))) )

# columns without missing observations
b<- a[,zz]
b

# columns with missing observations
c<- a[1:4,-zz]
c

如果第1行到第4行中缺少观测值,则这两种方法都不起作用。

假设您的数据如下所示

       t1         t2          t3         t4         t5
1  1.00867689 -1.0286160 -0.13429176 -2.3891856  1.2285634
2 -0.06094606 -0.5265711 -0.52767898         NA         NA
3  1.60603566  0.8295580 -0.44729021 -0.1297540 -1.5007802
4  0.13809702  0.5940972  0.80628674         NA         NA
5  0.45239500  0.6797742 -0.03644485  0.7555041  0.4816549
然后

会有用的

尽管如此,正如Aaron所说,在丢弃这些数据之前,确保丢弃这些数据是明智的。确定早死人群的分类变量可能会起作用。不过,可能有更好的方法来处理这个问题

干杯,
Davy可能只是不知道?它将从数据集中删除不完整的案例

data <- na.omit(culture_data)

您想要的数据
%在%
中。请尝试
?“%in%”
了解详细信息。同时,请确保您对死去的人做了明智的处理;也许那些死去的人与那些没有死去的人在某些方面有所不同;在这种情况下,忽略它们,就像你在这里做的那样,可能是非常错误的。为什么不只是
文化数据[1:4,c(“X1”、“X2”、“X3”、“X10”)]
?或者
文化数据[!is.na(文化数据)]
?非常感谢你的帮助!我在%中添加了%并且它正在工作!非常感谢。我还意识到我试图避免的NA值实际上不是问题。我试图估计一个自启动模型的参数,在这种情况下,R忽略了NA值。但是这些信息非常有用-谢谢!
missing = subset(test,is.na(rowSums(test)))
nonmissing = subset(test,!is.na(rowSums(test)))
data <- na.omit(culture_data)