如何通过中的R列写一个for循环来循环

问题描述 投票:2回答:1

我要循环列。该列的每个值,则在测试数据对应一列。我想找到对应列和复制拷贝到我只是做了一个新的列。后续是我做了什么。但也有语法错误,因为我不知道如何循环使用正确R.列

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

}

enter image description here

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
r
1个回答
0
投票

我敢肯定,必须有这样的purrr :: MAP2版本,但我想送两个向量(一个位置值的列和其他行索引)以“[”是非常简单的任务。唯一的疑难杂症似乎是必要的mapply值不公开。我觉得可能是,会做同样的事情simplify2array说法。

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
© www.soinside.com 2019 - 2024. All rights reserved.