Hi,
dat <- structure(list(Cname = c("chiyyan", "saikiran",
"niranjan", "yeswanth",
"anitha", "krishna"), Wname = c("chyyan",
"saikira", "nirnjan",
"eswanth", "anita", "krisna")), .Names =
c("Cname", "Wname"), class = "data.frame",
row.names = c(NA,
-6L))
output <- structure(list(Cname = c("chiyyan", "saikiran",
"niranjan", "yeswanth",
"anitha", "krishna"), Wname = c("chyyan",
"saikira", "nirnjan",
"eswanth", "anita", "krisna"), starting = c(1L,
1L, 0L, 1L, 0L,
0L), middle = c(0L, 0L, 1L, 0L, 0L, 1L), ending = c(0L, 0L, 0L,
0L, 1L, 0L)), .Names = c("Cname", "Wname",
"starting", "middle",
"ending"), class = "data.frame", row.names = c(NA, -6L))
#Here, I am not following the logic.
output[1:2,]
# Cname Wname starting middle ending
#1 chiyyan chyyan 1 0 0
#2 saikiran saikira 1 0 0 ##1 for "ending"?
You may try:
library(Biostrings)
res <- cbind(dat, setNames(as.data.frame(t(
sapply(seq_len(nrow(dat)),function(i) {p1
<-pairwiseAlignment(dat[i,2],dat[i,1]); m1 <- as.matrix(p1); m2 <-
matrix(0,nrow=1,ncol=3,dimnames=list(NULL,c("starting","middle","ending")));
me <- median(seq(ncol(m1))); vec1 <- c(floor(me),ceiling(me)); indx <-
which(m1=="-"); if(indx < vec1[1]) {m2[,"starting"]
<-1; m2} else if(indx > vec1[2]) {m2[,"ending"] <- 1; m2}
else m2[,"middle"] <- 1; m2 }))),
c("starting","middle","ending")))
res
Cname Wname starting middle ending
1 chiyyan chyyan 1 0 0
2 saikiran saikira 0 0 1
3 niranjan nirnjan 0 1 0
4 yeswanth eswanth 1 0 0
5 anitha anita 0 0 1
6 krishna krisna 0 0 1
output
Cname Wname starting middle ending
1 chiyyan chyyan 1 0 0 #here "i" 3rd letter missing
from Wname.
2 saikiran saikira 1 0 0
3 niranjan nirnjan 0 1 0
4 yeswanth eswanth 1 0 0
5 anitha anita 0 0 1
6 krishna krisna 0 1 0 ## here "h" is the 5th
letter.
So, I am not sure about your classificiation of middle. In both
"chiyyan" and "krishna", 4th letter is the middle one. So,
I don't understand how you got 1 for "starting" in the case of
"chiyyan" while 1 is "middle" for "krishna".
A.K.
Hi,Users I have troble in one task is give below plz...help me Cname Wname
chiyyan chyyan
saikiran saikira
niranjan nirnjan
yeswanth eswanth
anitha anita
krishna krisna here Cname means Correct name and Wname means Wrong name it's
letter's
missing,so in Wname column identify which place letter missing like
starting,middle,ending place.if starting letter missing given numeric
1 remainings 0's.finaly out put is Cname Wname starting
middle ending
chiyyan chyyan 1 0 0
saikiran saikira 1 0 0
niranjan nirnjan 0 1 0
yeswanth eswanth 1 0 0
anitha anita 0 0 1
krishna krisna 0 1 0 plz...solve this