簡體   English   中英

如何編寫for循環以遍歷R中的列

[英]how to write a for loop to loop through a column in R

我想遍歷一列。 對於該列的每個值,測試數據中都有一個對應的列。 我想找到對應的列,然后將副本復制到我剛創建的新列中。 以下是我所做的。 但是存在語法錯誤,因為我不知道如何使用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

我確定必須有一個purrr :: map2版本,但是我認為將兩個向量(一個位置值列和另一個行索引)發送到[[]的任務非常簡單。 唯一的mapply似乎是該mapply值需要取消列出。 我認為可能會有一個simple2array參數會做同樣的事情。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM