r - 测试元素是否在列表中并返回 0 或 1

标签 r performance loops

我目前正在尝试检查一个元素是否是列表的一部分,如果是则返回 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/

相关文章:

ios - 在 ScrollView 中循环重置(swift 3)

java - 捕获线程内的所有异常

r - 将增量数字附加到列中的特定字符串

r - grepl() 中的动态变量

python - [] 和 {} 与 list() 和 dict(),哪个更好?

performance - 在 Julia 中分解一个没有任何内存分配的矩阵

javascript - 延迟解析 JavaScript 以加载 JQuery

swift - 简单的 Action 循环

javascript - 使用 RSelenium/XML 抓取评论(用 javascript 生成)

r - 如何在指定值的线图中添加阴影置信区间