On 14.11.2009, at 03:58, David Winsemius wrote:

On Nov 13, 2009, at 11:19 AM, soeren.vo...@eawag.ch wrote:

a <- c("Mama", "Papa", "Papa; Mama", "", "Sammy; Mama; Papa")
a <- strsplit(a, "; ")
mama <- rep(F, length(a))
mama[sapply(a, function(x) { sum(x=="Mama") }, simplify=T) > 0] <- T

[...]

... produces the variables "mama" and "papa" correctly. But how do I remove all "Mama" list entries

[...]

Maybe you should explain what you were trying to do?  Perhaps:

> a[!mama]

[...]

I would sidestep that confusing sequence of logical assignments and just do this:

> a[ -grep("Mama", a) ]

[...]

Explanation of what I want to do: This code is PHP, maybe rather crude but it works the way I want it and explains my goal:

#!/usr/bin/php
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('html_errors', false);
$strings = array("Mama", "Papa", "Papa; Mama", "", "Sammy; Mama; Papa", "Josh", "Mama");
$vars = array("Mama", "Papa", "Sammy");
$i=0;
foreach($strings as $line){
  $line = explode("; ", $line);
  $matches = array_intersect($line, $vars);
  $diffs = array_diff($line, $vars);
  foreach($matches as $match){
    eval("\$$match"."["."$i"."] = 1;"); // no easier way
  }
  foreach($diffs as $diff){
    $others[$i] = $diff;
  }
  $i++;
}
print_r($Mama); // array with elements 0, 2, 4, and 6 set to "1"
print_r($Papa); // array with elements 1, 2, and 4, set to "1"
print_r($Sammy); // array with element 4 set to "1"
print_r($others); // array with elements 3 set to "", and 5 set to "Josh"
?>

Sören

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to