In y <- substr(x, i, 1) your third integer needs to be the location not the number of digits, so change it to y <- substr(x, i, i) and you should get what you want. Cheers, Tim> Date: Sun, 21 Jan 2018 10:50:31 -0500 > From: Ek Esawi <esawiek at gmail.com> > To: Luigi Marongiu <marongiu.luigi at gmail.com>, r-help at r-project.org > Subject: Re: [R] substr gives empty output > Message-ID: > <CA+ZkTxubYDSZ3iqsg_=be9HBA2_3-TE95=mXbh4atvG- > ri_ixQ at mail.gmail.com> > Content-Type: text/plain; charset="UTF-8" > > The reason you get "" is, as stated on the previous response and on the > documentation of substr function, the function "When extracting, if start is > larger than the string length then "" is returned.". This is what happens on > your function. > > HTH > > EK > > On Sun, Jan 21, 2018 at 3:59 AM, Luigi Marongiu <marongiu.luigi at gmail.com> > wrote: > > Dear all, > > I have a string, let's say "testing", and I would like to extract in > > sequence each letter (character) from it. But when I use substr() I > > only properly get the first character, the rest is empty (""). What am > > I getting wrong? > > For example, I have this code: > > > >>>> > > x <- "testing" > > k <- nchar(x) > > for (i in 1:k) { > > y <- substr(x, i, 1) > > print(y) > > } > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide > > http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > >
There is also a way to do this without a loop:> strsplit(x, "")[[1]] [1] "t" "e" "s" "t" "i" "n" "g" # Or if you just want the vector> strsplit(x, "")[[1]][1] "t" "e" "s" "t" "i" "n" "g" ---------------------------------------- David L Carlson Department of Anthropology Texas A&M University College Station, TX 77843-4352 -----Original Message----- From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Howard, Tim G (DEC) Sent: Monday, January 22, 2018 6:58 AM To: r-help at r-project.org; Luigi Marongiu <marongiu.luigi at gmail.com> Subject: Re: [R] substr gives empty output In y <- substr(x, i, 1) your third integer needs to be the location not the number of digits, so change it to y <- substr(x, i, i) and you should get what you want. Cheers, Tim> Date: Sun, 21 Jan 2018 10:50:31 -0500 > From: Ek Esawi <esawiek at gmail.com> > To: Luigi Marongiu <marongiu.luigi at gmail.com>, r-help at r-project.org > Subject: Re: [R] substr gives empty output > Message-ID: > <CA+ZkTxubYDSZ3iqsg_=be9HBA2_3-TE95=mXbh4atvG- > ri_ixQ at mail.gmail.com> > Content-Type: text/plain; charset="UTF-8" > > The reason you get "" is, as stated on the previous response and on > the documentation of substr function, the function "When extracting, > if start is larger than the string length then "" is returned.". This > is what happens on your function. > > HTH > > EK > > On Sun, Jan 21, 2018 at 3:59 AM, Luigi Marongiu > <marongiu.luigi at gmail.com> > wrote: > > Dear all, > > I have a string, let's say "testing", and I would like to extract in > > sequence each letter (character) from it. But when I use substr() I > > only properly get the first character, the rest is empty (""). What > > am I getting wrong? > > For example, I have this code: > > > >>>> > > x <- "testing" > > k <- nchar(x) > > for (i in 1:k) { > > y <- substr(x, i, 1) > > print(y) > > } > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide > > http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > >______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Thank you, I got it, now it works good On Mon, Jan 22, 2018 at 1:58 PM, Howard, Tim G (DEC) <tim.howard at dec.ny.gov> wrote:> In > > y <- substr(x, i, 1) > > your third integer needs to be the location not the number of digits, so > change it to > > y <- substr(x, i, i) > > and you should get what you want. > Cheers, > Tim > > > Date: Sun, 21 Jan 2018 10:50:31 -0500 > > From: Ek Esawi <esawiek at gmail.com> > > To: Luigi Marongiu <marongiu.luigi at gmail.com>, r-help at r-project.org > > Subject: Re: [R] substr gives empty output > > Message-ID: > > <CA+ZkTxubYDSZ3iqsg_=be9HBA2_3-TE95=mXbh4atvG- > > ri_ixQ at mail.gmail.com> > > Content-Type: text/plain; charset="UTF-8" > > > > The reason you get "" is, as stated on the previous response and on the > > documentation of substr function, the function "When extracting, if > start is > > larger than the string length then "" is returned.". This is what > happens on > > your function. > > > > HTH > > > > EK > > > > On Sun, Jan 21, 2018 at 3:59 AM, Luigi Marongiu < > marongiu.luigi at gmail.com> > > wrote: > > > Dear all, > > > I have a string, let's say "testing", and I would like to extract in > > > sequence each letter (character) from it. But when I use substr() I > > > only properly get the first character, the rest is empty (""). What am > > > I getting wrong? > > > For example, I have this code: > > > > > >>>> > > > x <- "testing" > > > k <- nchar(x) > > > for (i in 1:k) { > > > y <- substr(x, i, 1) > > > print(y) > > > } > > > > > > [[alternative HTML version deleted]] > > > > > > ______________________________________________ > > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > > https://stat.ethz.ch/mailman/listinfo/r-help > > > PLEASE do read the posting guide > > > http://www.R-project.org/posting-guide.html > > > and provide commented, minimal, self-contained, reproducible code. > > > > >[[alternative HTML version deleted]]