1
我想匹配2列表中的值,只有列表中的變量名稱相同。我希望結果是一個列表,長列表的長度填充了總匹配數。匹配兩個不等長的列表
jac <- structure(list(s1 = "a", s2 = c("b", "c", "d"), s3 = 5),
.Names = c("s1", "s2", "s3"))
larger <- structure(list(s1 = structure(c(1L, 1L, 1L), .Label = "a", class = "factor"),
s2 = structure(c(2L, 1L, 3L), .Label = c("b", "c", "d"), class = "factor"),
s3 = c(1, 2, 7)), .Names = c("s1", "s2", "s3"), row.names = c(NA, -3L), class = "data.frame")
我使用mapply(FUN = pmatch, jac, larger)
這給了我正確的,但總不能說我會喜歡下面的格式:
不過,我不認爲pmatch將確保每名匹配所以我寫了一個函數,我仍然有問題:
prodMatch <- function(jac,larger){
for(i in 1:nrow(larger)){
if(names(jac)[i] %in% names(larger[i])){
r[i] <- jac %in% larger[i]
r
}
}
}
任何人都可以幫忙嗎?
導致一個不是ohter的倍數另一個數據集:
larger2 <-
structure(list(s1 = structure(c(1L, 1L, 1L), class = "factor", .Label = "a"),
s2 = structure(c(1L, 1L, 1L), class = "factor", .Label = "c"),
s3 = c(1, 2, 7), s4 = c(8, 9, 10)), .Names = c("s1", "s2",
"s3", "s4"), row.names = c(NA, -3L), class = "data.frame")
如果可能的話,我將處理很多行並希望使用data.table。 data.table與您的建議是否相同? – user3067851
你可以使用'as.data.table'來轉換成'data.table'。 – Psidom
當使用'匹配',即使列的名稱不匹配,將找到匹配的索引,正確?如果我在具有不同名稱的列中具有匹配的值,那可能會出現問題,否? – user3067851