循环的每次迭代都创建新的数据集

时间:2018-07-12 02:39:50

标签: r loops

我将def定义为一个整数矢量,其中包含1到50之间的50个不同的随机数

nums

我正在尝试创建一个图形,该图形显示从现在开始仅将一个特定值nums = sample(50, replace=TRUE) 更改为采用-97至99之间的所有值时,均值和中位数会受到​​怎样的影响。都是1以外的98个整数。

我想要创建100个数据集,其中每个nums[1]不同。我正在使用for循环将nums[1]每次递增2,这意味着100次迭代将使nums[1]达到99。

nums[1]

如何创建一个新数据集,其当前值为nums[[1]] = -97 for(i in 1:100) { nums[[1]] = (nums[[1]] + 2) } 加上nums[1]中的所有其他值不变?这比看起来要棘手,因为我希望能够遍历这些数据集并显示每个数据集的均值和中位数。例如,我可以调用nums来显示平均值。

但这意味着我需要一个可预测的命名方案,以便我可以遍历它们。那有可能吗?我当时正在考虑做类似“创建名为mean(nums)的新数据集之类的事情,除了nums[i]用于数组内的索引,所以我不确定该怎么做。

从那里开始,我想可以先向数据集中添加[],然后再添加nums[1],但我仍然坚持如何实际创建各个集合。

编辑:

nums[2:50]

使用lapply,我可以在下面的for循环中添加以下内容,以获取每个数据集的x [1]值以及每个数据集的平均值和中位数。然后,我将如何做同样的事情,并将这些值中的每一个放入ggplot可以使用的新数据帧中?

1 个答案:

答案 0 :(得分:1)

您可以做到

set.seed(2017)
nums <- sample(50, replace=TRUE)

lst <- lapply(seq(-97, 99, by = 2), function(x) { nums[1] <- x; nums; })

或使用replace

lst <- lapply(seq(-97, 99, by = 2), function(x) replace(nums, 1, x))

两个方法都返回list integer中的vectors,其中每个vector的第一个元素已被值seq(-97, 99, by = 2)取代。我们以length(seq(-97, 99, by = 2)) = 99中的list个元素结束。

“我已将nums定义为包含50个不同随机数的列表(数组)[...]” 请注意,nums是{{1 }} integer(不是vector也不是list)。