I found a solution. Here it is:
//Update Roles automatically when Membership Level changes
function rb_update_user_role( $user_id) {
$user = new WP_User( $user_id );
$user_meta=get_userdata($user_id);
$all_role = $user_meta->roles;
foreach ($all_role as $role_value){
if ($role_value === 'vendor'){
$user->remove_role( 'vendor' );
}
if ($role_value === 'customer'){
$user->remove_role( 'customer' );
}
if ($role_value === 's2member_level1'){
$user->remove_role( 's2member_level1' );
$role="s2member_level1";
}
if ($role_value === 'subscriber'){
$user->remove_role( 'subscriber' );
$role="subscriber";
}
}
if ( $role === 'subscriber' ) {
unset($new_role);
$new_role = array($role => 0 ,'customer' => 1) ;
update_user_meta($user_id, 'wp_capabilities', $new_role);
}
if ($role === 's2member_level1'){
unset($new_role);
$new_role = array($role => 0,'vendor' => 1) ;
update_user_meta($user_id, 'wp_capabilities', $new_role);
}
}
add_action( 'profile_update', 'rb_update_user_role', 99, 1 );