Преобразование массива объектов к массиву их типов примитивов

Чтобы выполнить замену во 2-м и 3-м столбцах, вы можете использовать

df[df$y == 0, 2:3] <- NA

Или указать столбцы по имени

df[df$y == 0, c("x1", "x2")] <- NA

В качестве альтернативы, используя library(data.table) можно сделать

setDT(df)[y==0, c('x1','x2') := NA]
78
задан informatik01 18 September 2013 в 21:26
поделиться

5 ответов

К сожалению, нет ничего в платформе Java, которая делает это. Btw, также необходимо ли явно обработать null элементы в Integer[] массив (что int Вы собирающийся использовать для тех?).

40
ответ дан Zach Scrivena 24 November 2019 в 10:26
поделиться

Еще раз Apache Commons Lang является Вашим другом. Они обеспечивают ArrayUtils.toPrimitive () , который делает точно, в чем Вы нуждаетесь. Можно указать, как Вы хотите обработать, аннулирует.

88
ответ дан informatik01 24 November 2019 в 10:26
поделиться

В особенности может это обойтись без необходимость создать новый массив и цикл через содержание.

Вы не можете преобразовать массив Целого числа к интервалу (т.е. Вы не можете изменить тип элементов массива) в Java. Так Вы любой должен создать новый интервал [], выстраивают и копируют значение Целочисленных объектов в него, или можно использовать адаптер:

class IntAdapter {
    private Integer[] array;
    public IntAdapter (Integer[] array) { this.array = array; }
    public int get (int index) { return array[index].intValue(); }
}

Это может сделать Ваш код немного более читаемым, и объект IntAdapter только использует несколько байтов памяти. Большое преимущество адаптера состоит в том, что можно обработать особые случаи здесь:

class IntAdapter {
    private Integer[] array;
    public int nullValue = 0;
    public IntAdapter (Integer[] array) { this.array = array; }
    public int get (int index) { 
        return array[index] == null ? nullValue : array[index].intValue();
    }
}

Другое решение состоит в том, чтобы использовать Примитивы палаты общин , который содержит много предопределенных адаптеров. В Вашем случае взгляните на ListIntList.

3
ответ дан Aaron Digulla 24 November 2019 в 10:26
поделиться

Или просто сделайте это простой способ, если Вы собираетесь сделать это только однажды. Но Вы не говорили о Целом числе! случай =null.

    //array is the Integer array
    int[] array2 = new int[array.length];
    int i=0;
    for (Integer integer : array) {
        array2[i] = integer.intValue();
        i++;
    }
2
ответ дан Jens Jansson 24 November 2019 в 10:26
поделиться

используя Доллар просто как:

Integer[] array = ...;
int[] primitiveArray = $(array).toIntArray();
1
ответ дан 24 November 2019 в 10:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: