Как написать цикл для цикла по столбцу в R - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу перебрать столбец.Для каждого значения столбца имеется соответствующий столбец в тестовых данных.Я хочу найти соответствующий столбец и скопировать копию в новый столбец, который я только что сделал.Следующее - то, что я сделал.Но есть синтаксическая ошибка, потому что я не знаю, как правильно перебрать столбец, используя R.

  for (i in test$Position) {
    value1 <- test[i] 
    index <- which(names(test)== value1)
    res <- test[i,index]
    test$newCoulumn [i]=res

}

введите описание изображения здесь

test <- structure(list(cc = c(90, 94, 87, 85, 86, 80, 92, 76, 90, 81, 
67), ST = c(90, 94, 87, 85, 86, 80, 92, 76, 90, 81, 67), RS = c(90, 
94, 87, 85, 86, 80, 92, 76, 90, 81, 67), LW = c(94, 92, 92, 90, 
92, 88, 91, 73, 86, 84, 64), LF = c(95, 93, 92, 90, 91, 87, 92, 
74, 89, 85, 65), CF = c(95, 93, 92, 90, 91, 87, 92, 74, 89, 85, 
65), RF = c(95, 93, 92, 90, 91, 87, 92, 74, 89, 85, 65), RW = c(94, 
92, 92, 90, 92, 88, 91, 73, 86, 84, 64), Position = c("RF", "ST", 
"LW", "RF", "LF", "RW", "RS", "CF", "ST", "cc", "RW")), row.names = c(NA, 
-11L), class = c("tbl_df", "tbl", "data.frame"))

test

    cc  ST  RS  LW  LF  CF  RF  RW  Position
    90  90  90  94  95  95  95  94  RF
    94  94  94  92  93  93  93  92  ST
    87  87  87  92  92  92  92  92  LW
    85  85  85  90  90  90  90  90  RF
    86  86  86  92  91  91  91  92  LF
    80  80  80  88  87  87  87  88  RW
    92  92  92  91  92  92  92  91  RS
    76  76  76  73  74  74  74  73  CF
    90  90  90  86  89  89  89  86  ST
    81  81  81  84  85  85  85  84  cc
    67  67  67  64  65  65  65  64  RW

1 Ответ

0 голосов
/ 06 февраля 2019

Я уверен, что должна быть версия purrr :: map2 этого, но я думал, что задача отправки двух векторов (один столбец значений Position и другой индексы строк) в "[" была довольно простой.Казалось, единственное, что надо, это значение mapply, которое не нужно перечислять.Я думаю, что мог бы быть аргумент simpify2array, который сделал бы то же самое.

test$Pos_val <- unlist(mapply(function(x,y){test[y,x]}, x=test$Position, y=1:nrow(test)))
> test
# A tibble: 11 x 10
      cc    ST    RS    LW    LF    CF    RF    RW Position Pos_val
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>      <dbl>
 1    90    90    90    94    95    95    95    94 RF            95
 2    94    94    94    92    93    93    93    92 ST            94
 3    87    87    87    92    92    92    92    92 LW            92
 4    85    85    85    90    90    90    90    90 RF            90
 5    86    86    86    92    91    91    91    92 LF            91
 6    80    80    80    88    87    87    87    88 RW            88
 7    92    92    92    91    92    92    92    91 RS            92
 8    76    76    76    73    74    74    74    73 CF            74
 9    90    90    90    86    89    89    89    86 ST            90
10    81    81    81    84    85    85    85    84 cc            81
11    67    67    67    64    65    65    65    64 RW            64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...