У меня есть фрейм данных, который я создал с помощью функции read_excel
, а затем продублировал его. Я собираюсь объяснить это, как если бы я использовал Excel, потому что это так легко сделать в Excel. Я хочу проверить, есть ли в каждой ячейке каждой строки в столбцах с 3 по 11 ноль, и если да, то поставить ноль в столбцах с 12 по 20. Если нет, сохранить исходное значение.
Data2 <- Data1
Data2[,12:20] <- apply(Data1[,3:11],1:2,function(x) {if(x==0) {0})
Это это сообщение об ошибке, которое я получаю:
Предупреждение: In [<-.data.frame
(*tmp*
,, 12:20, значение = список (0, 0, 0, 0, 0,: при условии 450) переменные для замены 9 переменных
Пример:
Data1 <- matrix(data=c(0,1,1,0,3,4,5,6,2,3,0,5,6,5,6,2,6,2,3,4,5,6,5,6),nrow=6,ncol=4)
Data2 <- Data1
Data2[,3:4] <- apply(Data1[,1:2],1:2,function(x) if(x==0) {0})
Data2 <- matrix(Data2,nrow=6,ncol=4)
Результат должен выглядеть следующим образом:
[,1] [,2] [,3] [,4]
[1,] 0 5 0 3
[2,] 1 6 5 4
[3,] 1 2 6 5
[4,] 0 3 0 6
[5,] 3 0 6 0
[6,] 4 5 2 6
, где любой ноль в столбцах 1 и 2 становится нули в соответствующем месте в столбцах 3 и 4.
Вместо этого я получаю это:
[,1] [,2] [,3] [,4]
[1,] 0 5 0 NULL
[2,] 1 6 NULL NULL
[3,] 1 2 NULL NULL
[4,] 0 3 0 NULL
[5,] 3 0 NULL 0
[6,] 4 5 NULL NULL
Кроме того, я все еще получаю то же сообщение об ошибке из исходных данных, которые имели 50 + строка и 20 столбцов показаны в начале.