通过传递下面的代码行来创建列表。
ID <- (sapply(strsplit(as.character(ncv$`Identity Number`), ""), as.numeric))
列表长度:
length(ID)
#[1] 3041
当我在head()
上致电ID
时,会出现以下(见下文)预期结果。
head(ID, 2)
#[[1]]
# [1] 9 4 1 2 0 7 0 6 0 4 0 8 5
#[[2]]
# [1] 9 6 1 0 0 3 5 1 8 3 0 8 3
我希望创建一个填充了字符串的矢量,&#34;女性&#34; 每次列表对象的第7个元素小于或等于4。 否则它应该返回&#34;男性&#34;向量。
gender <- vector(length = 3041)
for(i in 1:3041){
if(ID[[i]][7] <= 4){
gender[i] <- "Female"
}else{gender[i] <- "Male"}
}
我收到此错误:
if(ID [[i]] [7]&lt; = 4){:缺少值需要TRUE / FALSE
时出错
答案 0 :(得分:1)
我们可以从每个列表中提取第7个元素,并使用ifelse
ifelse(sapply(ID, '[', 7) <= 4, "female", "male")
#[1] "female" "male"
数据强>
ID <- list(c(9,4,1,2,0,7,0,6,0,4,0,8,5), c(9,6,1,0,0,3,5,1,8,3,0,8,3))
如果值为NA
,我们可以在ifelse
seventh_value = sapply(ID, '[', 7)
ifelse(seventh_value > 4 | is.na(seventh_value), "male", "female")
#[1] "male" "male"
数据强>
ID <- list(c(9,4,1,2,0,7,NA,6,0,4,0,8,5), c(9,6,1,0,0,3,5,1,8,3,0,8,3))