R:如何将向量中的值与同一向量中的所有值进行匹配
我在看一个类似于这个的向量R:如何将向量中的值与同一向量中的所有值进行匹配,r,R,我在看一个类似于这个的向量 x使用原始的x,这似乎给出了您想要的答案: x <- c("P1D3,P3A7", 0, 0, "P1D3,P3A7", "P1D3, P2A3, P4D2", 0, "P1D3, P3A7, P2G60", "P1D3,P3A7") x我不明白为什么5为假“P1D3,P2A3,P4D2”其中as 4“P1D3,P3A7”为真。它们都没有0。您是否在寻找最长的公共子字符串,正如我在上面所说的,我不想只寻找0以外的任何东西,我希望能够匹配值。在我的理想结果中,“
x使用原始的
x
,这似乎给出了您想要的答案:
x <- c("P1D3,P3A7", 0, 0, "P1D3,P3A7", "P1D3, P2A3, P4D2", 0, "P1D3, P3A7, P2G60", "P1D3,P3A7")
x我不明白为什么5为假“P1D3,P2A3,P4D2”
其中as 4“P1D3,P3A7”
为真。它们都没有0。您是否在寻找最长的公共子字符串,正如我在上面所说的,我不想只寻找0以外的任何东西,我希望能够匹配值。在我的理想结果中,“P1D3,P2A3,P4D2”将是错误的,我只需要到达那里。我想最长的公共子串会有帮助,但我需要多个长公共子串。你的问题不清楚。目前我使用的向量是数据帧的一列。对于strplit(x,“,\\s*”)函数,引号中的部分是否仍然适用?它似乎称之为非角色argument@DarwinChang-很确定,这是因为您有一个factor
列-尝试spl它似乎在大部分情况下都有效。现在唯一的问题是,如果有一个x@DarwinChang-likemapply(函数(v,s)any(v%in%unlist(spl[-s])),spl,seq_-along(spl))
或其他什么?这太棒了!我认为它有效!你能解释一下清单上的内容吗?
View(xPres)
x <- c("P1D3,P3A7", 0, 0, "P1D3,P3A7", "P1D3, P2A3, P4D2", 0, "P1D3, P3A7, P2G60", "P1D3,P3A7")
spl <- lapply(strsplit(x, ",\\s*"), setdiff, y=c("P1D3","0"))
mapply(function(v,s) any(v %in% unlist(spl[-s])), spl, seq_along(spl))
#[1] TRUE FALSE FALSE TRUE FALSE FALSE TRUE TRUE