2016-06-29 46 views
1

我有兩個DF,我想知道這些字符串的DF2與DF1匹配指數如何從兩個數據找到類似的字符串的索引幀

df1 <- structure(list(Ids = structure(c(2L, 4L, 3L, 5L, 1L, 6L), .Label = c("           P30561,P53762", 
"           P41182,P56524", "           P41182,Q8WUI4", 
"           P41182,Q9UQL6", "        Q92793,Q09472,Q9Y6Q9,Q92831", 
"      Q15021,Q9BPX3,Q15003,O95347,Q9NTJ3"), class = "factor")), .Names = "Ids", class = "data.frame", row.names = c(NA, 
-6L)) 

我DF2看起來像下面

df2 <-structure(list(V1 = structure(c(1L, 2L, 5L, 4L, 3L), .Label = c("P41182", 
"Q15003", "Q9BHX3", "Q9BPXH", "Q9NTJ3"), class = "factor")), .Names = "V1", class = "data.frame", row.names = c(NA, 
-5L)) 

在這種情況下,我應該有樣1,2和3以及6的索引,因爲在DF2中的字符串中那些行類似於從DF1

+1

你是不是應該有6還因爲有一個匹配。 'grep(paste(df2 $ V1,collapse =「|」),df1 $ Ids)' – akrun

+0

你一直在問[其他問題](http://stackoverflow.com/questions/38052776)關於這個相同的UniProt IDs數據集,如果你能給我們一個更大的畫面,它會更清晰。你是如何最終在df1中擁有空間的?你想達到什麼目的? – zx8754

+0

@ zx8754這是一個編程問題,如果你想知道生物信息學,你應該去Biostar.org – nik

回答

2

如果圖案vector長度爲grep大,那麼我們就可以遍歷所有的模式和grep

unique(unlist(lapply(df2$V1, grep, x = df1$Ids))) 

,並使用OP的原始數據集

unique(unlist(lapply(df2$dftNew.rn, grep, x = df1$V1))) 
#[1] 68 80 168 201 214 215 229 288 289 386 388 7 525 4 30 234 362 405 406 129 206 6 51 125 126 127 136 137 254 546 468 
#[32] 298 438 264 487 12 26 47 86 90 91 92 120 121 122 143 152 153 154 155 245 248 249 440 157 158 162 164 165 167 169 170 
#[63] 244 401 113 114 115 24 28 29 31 218 219 97 272 456 457 82 161 270 378 383 88 2 5 17 128 130 134 135 138 140 398 
#[94] 435 241 441 369 373 389 230 231 27 213 95 101 102 104 105 106 262 519 202 204 358 359 360 361 363 364 366 407 408 409 410 
#[125] 203 110 199 200 243 187 320 321 322 396 233 323 333 1 271 277 433 455 109 16 184 185 186 543 545 265 19 469 470 471 473 
#[156] 472 8 9 107 111 116 175 276 196 430 212 89 547 573 560 305 306 21 85 147 151 222 224 225 226 246 403 404 568 439 286 
#[187] 542 544 49 14 370 402 452 513 484 56 57 518 297 371 374 335 336 337 338 339 48 58 190 530 531 532 533 534 535 537 538 
#[218] 501 40 242 287 446 81 269 400 432 309 467 488 499 504 506 507 512 548 179 372 428 511 561 569 291 258 55 67 217 293 376 
#[249] 189 235 447 448 482 500 267 263 310 572 207 208 211 295 325 60 284 285 477 478 52 53 54 59 73 172 205 209 210 220 395 
#[280] 481 304 334 510 352 351 353 411 420 343 13 61 62 69 70 71 240 282 416 443 462 465 466 480 483 498 84 475 22 79 444 
#[311] 145 156 324 384 497 18 348 83 98 290 509 20 50 357 350 421 183 377 492 493 307 308 434 522 523 524 529 536 355 188 303 
#[342] 341 344 346 347 349 453 551 340 479 63 65 474 331 177 427 180 299 300 423 424 425 426 450 74 489 87 173 274 275 550 260 
#[373] 485 567 495 345 413 442 278 279 490 566 259 393 394 273 422 476 502 503 516 539 521 558 146 32 99 505 508 281 171 329 280 
#[404] 328 540 541 191 192 193 194 365 367 368 496 515 354 459 133 253 227 228 77 78 166 64 302 549 517 247 292 195 330 431 385 
#[435] 387 571 251 268 382 486 100 23 311 559 564 565 463 283 10 11 38 39 41 42 43 44 76 123 124 197 198 221 237 238 239 
#[466] 250 255 257 313 314 316 317 318 319 375 379 412 464 454 574 552 45 46 75 96 144 252 315 380 381 390 391 494 327 108 296 
#[497] 491 526 527 414 148 149 3 356 445 181 182 15 93 94 117 118 119 174 176 178 256 326 436 66 216 528 554 555 556 557 562 
#[528] 563 570 575 417 418 419 72 261 132 397 437 449 451 458 312 415 139 141 163 514 392 301 520 112 266 142 160 33 34 35 36 
#[559] 37 150 294 461 429 223 236 25 399 332 460 131 159 342 103 232 553 

dim(df1) 
#[1] 575 1 
+1

偉大的解決方案,謝謝!我喜歡它,我接受了它 – nik

相關問題