Как изменить столбцы, но сохранить имена строк в R pipe? - PullRequest
0 голосов
/ 16 июня 2020
r$> iris %>% .[which(as.numeric(rownames(.))%%3!=0),] %>% rownames
  [1] "1"   "2"   "4"   "5"   "7"   "8"   "10"  "11"  "13"  "14"  "16"  "17"  "19"  "20"  "22"  "23"  "25"  "26"  "28"  "29"  "31"  "32"  "34"  "35"  "37"  "38"  "40"  "41"  "43"  "44"  "46"
 [32] "47"  "49"  "50"  "52"  "53"  "55"  "56"  "58"  "59"  "61"  "62"  "64"  "65"  "67"  "68"  "70"  "71"  "73"  "74"  "76"  "77"  "79"  "80"  "82"  "83"  "85"  "86"  "88"  "89"  "91"  "92"
 [63] "94"  "95"  "97"  "98"  "100" "101" "103" "104" "106" "107" "109" "110" "112" "113" "115" "116" "118" "119" "121" "122" "124" "125" "127" "128" "130" "131" "133" "134" "136" "137" "139"
 [94] "140" "142" "143" "145" "146" "148" "149"

r$> iris %>% .[which(as.numeric(rownames(.))%%3!=0),] %>% mutate(Sepal.Length=Sepal.Length+1) %>% rownames
  [1] "1"   "2"   "3"   "4"   "5"   "6"   "7"   "8"   "9"   "10"  "11"  "12"  "13"  "14"  "15"  "16"  "17"  "18"  "19"  "20"  "21"  "22"  "23"  "24"  "25"  "26"  "27"  "28"  "29"  "30"  "31"
 [32] "32"  "33"  "34"  "35"  "36"  "37"  "38"  "39"  "40"  "41"  "42"  "43"  "44"  "45"  "46"  "47"  "48"  "49"  "50"  "51"  "52"  "53"  "54"  "55"  "56"  "57"  "58"  "59"  "60"  "61"  "62"
 [63] "63"  "64"  "65"  "66"  "67"  "68"  "69"  "70"  "71"  "72"  "73"  "74"  "75"  "76"  "77"  "78"  "79"  "80"  "81"  "82"  "83"  "84"  "85"  "86"  "87"  "88"  "89"  "90"  "91"  "92"  "93"
 [94] "94"  "95"  "96"  "97"  "98"  "99"  "100"

Мне нравится mutate(), потому что его легко использовать в pipe. Как и в приведенном выше примере, вы можете найти измененные имена после изменения.

Мне нужно изменить столбцы, но оставить имя строки неизменным, как это сделать через канал R?

Ответы [ 2 ]

1 голос
/ 16 июня 2020
iris %>% tibble::rownames_to_column(., 'rowname') %>% .[which(as.numeric(rownames(.))%%3!=0),] %>% mutate(Sepal.Length=Sepal.Length+1) %>% tibble::column_to_rownames(.,'rowname')
1 голос
/ 16 июня 2020

Это потому, что mutate или вообще dplyr перенастраивает имена строк с 1 после любой операции, следовательно, не сохраняет исходные имена строк.

Если они вам понадобятся для дальнейших манипуляций, сохраните их как столбец.

library(dplyr)

iris %>% 
   .[which(as.numeric(rownames(.))%%3!=0),] %>%
    mutate(row = rownames(.),
            Sepal.Length=Sepal.Length+1) %>%
    pull(row)

#  [1] "1"   "2"   "4"   "5"   "7"   "8"   "10"  "11"  "13"  "14"  "16"  "17"  "19"  "20"  "22"  "23"  "25"  "26" 
# [19] "28"  "29"  "31"  "32"  "34"  "35"  "37"  "38"  "40"  "41"  "43"  "44"  "46"  "47"  "49"  "50"  "52"  "53" 
# [37] "55"  "56"  "58"  "59"  "61"  "62"  "64"  "65"  "67"  "68"  "70"  "71"  "73"  "74"  "76"  "77"  "79"  "80" 
# [55] "82"  "83"  "85"  "86"  "88"  "89"  "91"  "92"  "94"  "95"  "97"  "98"  "100" "101" "103" "104" "106" "107"
# [73] "109" "110" "112" "113" "115" "116" "118" "119" "121" "122" "124" "125" "127" "128" "130" "131" "133" "134"
# [91] "136" "137" "139" "140" "142" "143" "145" "146" "148" "149"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...