我有一个包含多个列的表,在其中一个列表中我需要创建一个向下流动的循环,如果存在相同的数字,则会创建另外两个列(例如,添加“p”)并在其中仅在先前创建的同一列中存在一次,例如“ - ”。任何人吗?
该列包含条形码TCGA-3M-AB47-01A-22R-A414-31
我需要AB47
for(code in tabela$Barcode){
t=sapply(strsplit(as.character(code), "-"), function(x) x[[2]]) #to extract the AB47
答案 0 :(得分:0)
这基本上等同于common查找all重复问题。 (具有讽刺意味的是,very广泛duplicated。)
对于x
之类的向量x = c("A", "A", "C", "B", "C", "D", "E", "F")
,最常见的答案是使用duplicated
函数两次,一次使用fromLast = T
标记全部重复。这将给出一个布尔向量,指示每个值是否重复。将1添加到布尔值会将其从TRUE
/ FALSE
转换为2
/ 1
,我们可以将其用作所需标记的子集索引:
y = c("-", "P")[(duplicated(x) | duplicated(x, fromLast = T)) + 1]