我目前正在尝试检查一个元素是否是列表的一部分,如果是则返回 1,否则返回 0。
我一直在为此做一个循环,但由于矩阵将非常大(这里只提供了一个简单的例子),我想知道是否有一种有效的方法来做到这一点。
rm(list=ls()) # clear memory
names <- c("a","b","c","d","e","f","g","h","i","j","k50","l50","m50","n50","o50")
proba <- c(1,1,1,1,1,1,1,1,1,1,0.5,0.5,0.5,0.5,0.5)
T1_temp <- sample(names,4,prob=proba)
# Loop to check which element of T1_temp is included in names
T1 <- c()
for (i in 1:length(names)){
if (is.element(names[i],T1_temp)){T1[i]=1}
else{T1[i]=0}
}
结果是
[1] 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0
最佳答案
我们可以尝试%in%
as.integer(names %in% T1_temp)
或匹配
+(!is.na(match(names,T1_temp)))
关于r - 测试元素是否在列表中并返回 0 或 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35547971/