【发布时间】:2012-02-29 19:19:42
【问题描述】:
我正在使用 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))
}
因此,我希望在第 4 行之后切割文化 1-3、10-12、37-39 和 46-48 的子集数据,并完全使用所有其他文化的子集数据。
我认为我的主要问题是在第一个“if”语句中,因为我不知道如何用它来告诉 R 在 n 等于其中任何一个值的情况下执行此条件。
如果有什么不清楚的地方请告诉我。谢谢!
【问题讨论】:
-
你想要
%in%。请尝试?'%in%'了解详情。 -
还要确保你对死去的人做一件明智的事情;也许那些死去的人与那些没有死去的人在某些方面有所不同;在这种情况下,就像您在这里所做的那样,忽略它们可能是非常错误的。
-
为什么不只是
culture_data[1:4,c("X1", "X2", "X3", "X10")]? -
或
culture_data[!is.na(culture_data)]? -
非常感谢您的帮助!我添加了 %in% 并且它正在工作!谢谢!我还意识到,我试图避免的 NA 值实际上并不是问题。我正在尝试估计其中一个自启动模型的参数,在这种情况下,R 只是忽略了 NA 值。但这些信息非常有用 - 谢谢!
标签: r if-statement for-loop