for循环中的两个if语句
我对R和编程都是一个完全的新手。 请原谅我的愚蠢,但我认为这将是一个很容易回答的问题。 我有一个如下表,并试图提取一组值添加到列表中。我的尝试如下:for循环中的两个if语句,r,R,我对R和编程都是一个完全的新手。 请原谅我的愚蠢,但我认为这将是一个很容易回答的问题。 我有一个如下表,并试图提取一组值添加到列表中。我的尝试如下: cfemale0=(0) for (i in Gender) { if (Gender[i]=="F") { if (Treatment[i]=="Control") { cfemale0=c(cfemale0,Distance[i]) } } } if-Gende
cfemale0=(0)
for (i in Gender) {
if (Gender[i]=="F") {
if (Treatment[i]=="Control") {
cfemale0=c(cfemale0,Distance[i])
}
}
}
if-Gender[i]==F{:缺少需要TRUE/FALSE的值时出错
下面是很长表格的摘录:
14 1 F Control 1 2
14 1 F Control 2 1
14 1 F Control 3 1
14 1 F Control 4 1
14 1 F Control 5 1
14 1 F Control 6 2
14 1 F Control 7 2
14 1 F Control 8 1
14 1 F Control 9 1
14 1 F Control 10 1
14 1 F Control 11 1
14 1 F Control 12 1
14 1 F Control 13 1
14 1 F Control 14 13
14 1 F Control 15 1
14 1 F Control 16 0
14 1 F MBR 1 1
14 1 F MBR 2 2
14 1 F MBR 3 18
14 1 F MBR 4 5
14 1 F MBR 5 16
14 1 F MBR 6 5
14 1 F MBR 7 0
14 1 F MBR 8 1
14 1 F MBR 9 3
14 1 F MBR 10 1
14 1 F MBR 11 17
14 1 F MBR 12 16
14 1 F MBR 13 17
14 1 F MBR 14 16
14 1 F MBR 15 17
14 1 F MBR 16 2
14 1 F MBL 1 2
14 1 F MBL 2 2
14 1 F MBL 3 1
14 1 F MBL 4 2
14 1 F MBL 5 1
14 1 F MBL 6 3
14 1 F MBL 7 4
14 1 F MBL 8 3
14 1 F MBL 9 3
14 1 F MBL 10 3
14 1 F MBL 11 2
14 1 F MBL 12 2
14 1 F MBL 13 2
14 1 F MBL 14 1
14 1 F MBL 15 1
14 1 F MBL 16 1
12 2 M Control 1 7
12 2 M Control 2 7
12 2 M Control 3 15
12 2 M Control 4 19
12 2 M Control 5 16
12 2 M Control 6 19
12 2 M Control 7 15
12 2 M Control 8 18
12 2 M Control 9 13
12 2 M Control 10 19
12 2 M Control 11 12
12 2 M Control 12 4
12 2 M Control 13 15
12 2 M Control 14 14
12 2 M Control 15 19
12 2 M Control 16 6
12 2 M MBR 1 7
12 2 M MBR 2 15
12 2 M MBR 3 15
12 2 M MBR 4 3
12 2 M MBR 5 8
12 2 M MBR 6 10
12 2 M MBR 7 17
12 2 M MBR 8 3
当你在性别中为i做时,我会取性别元素的值。它不是一个有效的索引,除非是偶然的,你通常会得到一个越界错误的索引。你不在这里可能是因为性别是一个列表
在比较对NA值执行和if语句(即执行ifNA)时,如果需要TRUE/FALSE,则会得到错误缺少值
因此,您的解决方案是为您的性别提供正确的索引:
如果性别是一个矩阵,你会将长度更改为nrow或ncol。我只能猜测你的数据结构,但如果它在数据框中,你所要做的就是:
vector <- df$Distance[df$Gender == "F" & df$Treatment == "Control",]
尝试一下seq_alongGender中的i…可能有一个简单的方法来做这件事,但你没有提供足够的信息,没有可复制的例子。现在你在第二个循环中。当你在Gender中做i时,我得到的是Gender中的值,因此当你做Gender[i]==F时,你基本上是在做类似F[F]的事情==F或M[F]==F,这是无效的syntex,处理方法相同。请参阅@BenBolker关于如何解决此问题的建议。无论哪种方式,您都不应该在此处使用循环,因此@Rolands注释将派上用场。Tim Foster和相同的so帐户?编辑是由davide建议的
vector <- df$Distance[df$Gender == "F" & df$Treatment == "Control",]