我有一个关于 R 中样本函数的简单问题。我从长度为 5 的输入向量中随机采样 0 和 1,并将它们相加,该向量指定要运行的试验次数并设置种子以生成可再现的随机数数字。种子按预期工作,但根据我在概率语句中输入的内容,我得到不同的随机数矩阵。在这种情况下,我假设 prob=NULL 应该与 prob=c(0.5,0.5) 相同。为什么不是呢?
vn<-c(12, 44, 9, 17, 28)
> do.call(cbind, lapply(c(1:10),function(X) {set.seed(X); sapply(vn, function(Y) sum(sample(x=c(0,1),size=Y,replace=T)), simplify=TRUE)}))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 6 7 7 6 6 9 3 6 2 5
[2,] 22 21 20 29 22 24 24 19 25 19
[3,] 4 8 3 5 4 4 4 6 4 2
[4,] 8 4 12 9 11 7 9 10 8 8
[5,] …Run Code Online (Sandbox Code Playgroud) 我希望这应该是一个简单的问题.我有几个数据框加载到工作区,标记为df01到df100,而不是所有代表的数字.我想在所有数据集中绘制特定列,例如在方框图中.如何使用globbing引用以df开头的所有对象,即:
boxplot(df00$col1, df02$col1, df04$col1)
=
boxplot(df*$col1)
Run Code Online (Sandbox Code Playgroud) 我有一个30,000行和3列的数字矩阵.我想基于矩阵每行中的3个值生成一个简单的PASS/FAIL向量(或因子).我想应用以下逻辑:
如果行> 3中的所有3个值,则输入PASS,否则输入FAIL.
我知道如何使用for循环执行此操作,但我怎么能更快地完成?我有几十个这样的矩阵......谢谢!
as.matrix(rbind(c(129,129,120),c(135,97,96),c(0,0,0),c(39,4,2)))
所需输出:通过,通过,失败,失败
我有一个数据帧lsD列表和一个向量列表lsV.向量的长度与数据帧中的行数相同(在玩具示例中= 5).
我想将向量添加为每个数据帧的附加列.我得到了for循环,但我的一般问题是:如何在没有名称的情况下迭代两个列表for?有lapply办法做到这一点吗?
这是一个玩具示例和我使用for循环的解决方案:
lsV <- list(x = sample(LETTERS[1:5], 5,replace=T),
y = sample(LETTERS[1:5], 5, replace=T),
z=sample(LETTERS[1:5], 5, replace=T))
lsD <- list(x = data.frame(matrix(sample(LETTERS[1:5], 20,replace=T), ncol=4)),
y = data.frame(matrix(sample(LETTERS[1:5], 20,replace=T), ncol=4)),
z = data.frame(matrix(sample(LETTERS[1:5], 20,replace=T), ncol=4)))
for (i in 1:length(lsV)) {lsD[[i]]<-cbind(lsD[[i]], lsV[[i]])}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我尝试了以下,但当然它没有用.谢谢!
lapply(names(lsD), function(X) {lsD$X<-cbind(lsD$X, lsV$X)})
Run Code Online (Sandbox Code Playgroud)