我想遍历一列。对于该列的每个值,测试数据中都有一个对应的列。我想找到对应的列,然后将副本复制到我刚创建的新列中。以下是我所做的。但是存在语法错误,因为我不知道如何使用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
答案 0 :(得分:0)
我确定必须有一个purrr :: map2版本,但是我认为将两个向量(一个位置值列和另一个行索引)发送到“ [”的任务非常简单。唯一的陷阱似乎是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