[英]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.