如何在 QuickCheck 中生成具有特定属性的数据框
How do you generate a data frame with certain properties in QuickCheck
我想使用 QuickCheck R library 生成 data.frame。 data.frame 必须有一些非随机命名的列,这些列必须具有特定类型。当您 运行 rdata.frame
时,您会得到一个完全随机的 data.frame,其列名如 col.1, col.2, ...
这不是目标。
例如,下面的数据框有两列(x 和 y),类型为整数和因子。
> data.frame(x=1:10, y=rep(F, 10))
x y
1 1 FALSE
2 2 FALSE
3 3 FALSE
4 4 FALSE
5 5 FALSE
6 6 FALSE
7 7 FALSE
8 8 FALSE
9 9 FALSE
10 10 FALSE
我可以做类似
> data.frame(x=rinteger(size=~10), y=rlogical(size=~10), z=rdouble(size=~10))
x y z
1 -94 FALSE 7.124120
2 -64 FALSE -47.855625
3 -87 FALSE -9.622184
4 -9 FALSE -28.678583
5 -78 TRUE 35.932244
6 -96 TRUE 116.449312
7 -63 TRUE 51.389978
8 65 TRUE -65.566058
9 71 FALSE 248.323594
10 -76 TRUE 138.238654
生成预期的格式(data.frame 具有正确的列名和特定类型的随机数据)。
但在我看来,必须有更好的方法,因为行数在这里并不重要。
将遵循某些属性的 data.frame 作为函数的输入是相当普遍的,不幸的是,文档在这部分上确实含糊不清。
奖励:如何将某些常量值与此 data.frame 合并? (例如,除了随机生成的数据外,还有一列 u 的值全为 0)。
library(quickcheck)
library(functional)
nr = rsize() # random number of rows
generators.nr =
lapply(
list(ri = rinteger, rd = rdouble, rl = rlogical), #all the ones you need
Curry,
size = ~nr)
with(
generators.nr,
data.frame(x = ri(), y = rd(), z = rl(), w = 1))
我想使用 QuickCheck R library 生成 data.frame。 data.frame 必须有一些非随机命名的列,这些列必须具有特定类型。当您 运行 rdata.frame
时,您会得到一个完全随机的 data.frame,其列名如 col.1, col.2, ...
这不是目标。
例如,下面的数据框有两列(x 和 y),类型为整数和因子。
> data.frame(x=1:10, y=rep(F, 10))
x y
1 1 FALSE
2 2 FALSE
3 3 FALSE
4 4 FALSE
5 5 FALSE
6 6 FALSE
7 7 FALSE
8 8 FALSE
9 9 FALSE
10 10 FALSE
我可以做类似
> data.frame(x=rinteger(size=~10), y=rlogical(size=~10), z=rdouble(size=~10))
x y z
1 -94 FALSE 7.124120
2 -64 FALSE -47.855625
3 -87 FALSE -9.622184
4 -9 FALSE -28.678583
5 -78 TRUE 35.932244
6 -96 TRUE 116.449312
7 -63 TRUE 51.389978
8 65 TRUE -65.566058
9 71 FALSE 248.323594
10 -76 TRUE 138.238654
生成预期的格式(data.frame 具有正确的列名和特定类型的随机数据)。 但在我看来,必须有更好的方法,因为行数在这里并不重要。
将遵循某些属性的 data.frame 作为函数的输入是相当普遍的,不幸的是,文档在这部分上确实含糊不清。
奖励:如何将某些常量值与此 data.frame 合并? (例如,除了随机生成的数据外,还有一列 u 的值全为 0)。
library(quickcheck)
library(functional)
nr = rsize() # random number of rows
generators.nr =
lapply(
list(ri = rinteger, rd = rdouble, rl = rlogical), #all the ones you need
Curry,
size = ~nr)
with(
generators.nr,
data.frame(x = ri(), y = rd(), z = rl(), w = 1))