我是R和编程的完全新手。 请原谅愚蠢,但我认为这将是一个容易回答的问题。 我有一个表(如下所示),我正在尝试提取一组值以添加到列表中。我的尝试如下:
cfemale0=(0)
for (i in Gender) {
if (Gender[i]=="F") {
if (Treatment[i]=="Control") {
cfemale0=c(cfemale0,Distance[i])
}
}
}
if (Gender[i] == "F") { : missing value where TRUE/FALSE needed
以下是(非常长)表格的摘录:
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
答案 0 :(得分:0)
当您执行for i in Gender
时,i
将获取Gender
元素的值。它不是有效的索引(除非偶然),并且通常会出现index out of bound
错误。你可能不在这里,因为Gender
是一个列表。
在比较missing value where TRUE/FALSE needed
值上的效果和if
语句时(即执行NA
),您会收到错误if(NA)
。
因此,您的解决方案是为Gender
提供正确的索引:
for (i in 1:length(Gender)) {
if (Gender[i]=="F") {}
}
如果length
是矩阵,您可以将nrow
更改为ncol
或Gender
。
答案 1 :(得分:0)
我只能猜测数据的结构,但如果它在数据框中 - 您只需要做的就是:
vector <- df$Distance[df$Gender == "F" & df$Treatment == "Control",]