【发布时间】:2022-01-09 11:21:56
【问题描述】:
如果我有以下两个对象:
> set.seed(100)
> lookup <- sample(1:3, 20, replace=T)
> lookup
[1] 2 3 2 3 1 2 2 3 2 2 3 2 2 3 3 3 3 2 1 3
和
> tb <- tibble(A=runif(20,0,1), B=runif(20,0,1), C= runif(20,0,1))
> tb
> tb
# A tibble: 20 × 3
A B C
<dbl> <dbl> <dbl>
1 0.770 0.780 0.456
2 0.882 0.884 0.445
3 0.549 0.208 0.245
4 0.278 0.307 0.694
5 0.488 0.331 0.412
6 0.929 0.199 0.328
7 0.349 0.236 0.573
8 0.954 0.275 0.967
9 0.695 0.591 0.662
10 0.889 0.253 0.625
11 0.180 0.123 0.857
12 0.629 0.230 0.775
13 0.990 0.598 0.834
14 0.130 0.211 0.0915
15 0.331 0.464 0.460
16 0.865 0.647 0.599
17 0.778 0.961 0.920
18 0.827 0.676 0.983
19 0.603 0.445 0.0378
20 0.491 0.358 0.578
如何使用lookup从tb中选择对应行/列的值?
即
- 如果
lookup的第一个元素= 1 那么我想从tb的第一行中选择A 中的值 - 如果
lookup的第二个元素= 2 那么我想从tb的第二行中选择B 中的值
所以我最终应该得到一个与lookup 大小相同的一维向量。它看起来像这样:
> new data
> [1] 0.780 0.445 0.208 0.694 0.488 ... 0.578
谢谢!
【问题讨论】:
-
感谢编辑!
-
brucezepplin,
set.seed的使用控制了所有后续的随机性。关键是你需要打电话给set.seed(100),然后做你随机的事情。在这种情况下,lookup以c(2,3,2,3,1,2,...)开头。这也会影响tb,因此理想情况下您应该运行set.seed(100)、lookup <- ...和tb <- ...。不使用随机性的混合代码不会影响随机性,但当然如果它们正在打印/使用随机数据,它们也需要重新运行。 -
您好 - 现已排序 - 设置种子后重新运行。男生错误
标签: r dplyr data-wrangling