У меня есть матрица, называемая mydf
. Как получить обратный столбцов A и C, как показано в результате?Обратное значение столбца в R
mydf
A B C
2 2 2
1 3 2
результат
A B C
0.5 2 0.5
1 3 0.5
У меня есть матрица, называемая mydf
. Как получить обратный столбцов A и C, как показано в результате?Обратное значение столбца в R
mydf
A B C
2 2 2
1 3 2
результат
A B C
0.5 2 0.5
1 3 0.5
Мы можем попробовать
mydf[c(1,3)] <- lapply(mydf[c(1,3)], function(x) 1/x)
mydf
# A B C
#1 0.5 2 0.5
#2 1.0 3 0.5
Или с помощью dplyr
library(dplyr)
mydf %>%
mutate_each(funs(1/.), -one_of("B"))
Примечание: Здесь я предполагаю, что в «mydf» как data.frame
Укажите, что 'mydf' должен быть' data.frame' и не может быть матрицей. Если вы попробуете это на 'matrix' (как сказал OP, несмотря на имя' mydf'), все не закончится хорошо ... – nicola
Я рекомендовал бы создать новую данные кадр, а затем инвертировать столбцы, которые нужно инвертирования
mydf <- data.frame(A=c(2,1), B=c(2,3), C=c(2,2))
mydf2 <- mydf
mydf2[,c(1,3)] <- mydf2[,c(1,3)]^(-1)
mydf2
# A B C
#1 0.5 2 0.5
#2 1.0 3 0.5
'mydf [, гр («A», «C»)] <- 1/mydf [, c («A», «C»)] ' – nicola
@DavidArenburg Это верно. Должно быть довольно просто, но нужно только для определенных столбцов. – MAPK