Instantiating with RPCs

This is my first time using Photon PUN and I am running into a problem that I can't really solve. In my scene, I have three blue canvas and one red canvas. I am trying to instantiate a camera for each of my clients, say three, so that Player 1 sees a blue canvas and Player 2 sees a different blue Canvas and Player 3 will see the red canvas. I've been running it a few times and it seems relatively inconsistent on what each player sees. Sometimes all three players will each get a blue canvas, sometimes two of the three players will get a red canvas etc.

I was wondering where my understanding of RPCs is failing and would like some help to see where my logic fails in the code.
    private void createCamera() {
        for (int i = 0; i < PhotonNetwork.PlayerList.Length; i++) {
            int number = i;
            // the first player in listOfPlayers should see the red Canvas. 
            if (listOfPlayers.Peek().NickName.Equals(PhotonNetwork.PlayerList[i].NickName)) {
                // canvasesXYZ.Length - 1 is the location of the red Canvas (the last in the array)
                number = canvasesXYZ.Length - 1;
            if (PhotonNetwork.PlayerList[i].IsLocal) {
                view.RPC("localCamera", PhotonNetwork.PlayerList[i], number);

    private void localCamera(int number) {
        _playerCamera = Instantiate(playerCamera, canvasesXYZ[number], new Quaternion(0,0,0,0));

The createCamera() is under Awake() and part of the Manager class and the PhotonView view and Manager class is attached to the Manager gameObject. canvasesXYZ stores a Vector3 where the camera should be placed. I've also tried without the if (PhotonNetwork.PlayerList is local and left the RPC call in the for loop.

If it's too difficult to understand, let me know and I will try to explain.

Thanks so much for the help.