【发布时间】:2022-01-17 06:54:48
【问题描述】:
我希望从 df 中随机选择变量集并在函数中使用它们。 列名标识了 n 个变量集(比如 n=3),比如 A 和 B。所以列名是 A.1、A.2、…An、B.1、B.2、…Bn 等。我随机选择 1 到 n 之间的数字来确定要选择的变量集。我粘贴了例如“A”。到随机数,得到一个向量V,由标识列的字符变量组成,例如“A.3”、“A.1”等。现在我想使用与列名对应的值。
df <- data.frame(matrix(c(1,5,7,4,3,8,2,9,5,5,7,4), 2, 6,
dimnames =list(NULL, c('A.1', 'A.2', 'A.3', 'B.1', 'B.2', 'B.3'))))
>df
A.1 A.2 A.3 B.1 B.2 B.3
1 7 3 2 5 7
5 4 8 9 5 4
rando <- c(1,3) # "random" numbers
VA <- paste('A.', rando, sep="") # A variable names
VB <- paste('B.', rando, sep="") # B variable names
我想要一个看起来像这样的数据框,即,其值来自与随机选择的数字相对应的列:
A B
1 2
8 4
我可以像这样得到表格的第一个元素:df[1, VA[1]],但我想知道如何有效地生成这个表格
【问题讨论】:
-
试试
df %>% select(all_of(c(VA, VB))) %>% pivot_longer(cols = everything(), names_to = ".value", names_pattern = "([A-Z])\\..*") %>% slice_sample(n = 2)或者它可以。成为%>% slice(rando) -
df[cbind(c(seq_along(VA), seq_along(VB)), match(c(VA, VB), colnames(df)))]