【问题标题】:function with loop that goes through columns of dataframes with different dimensions带有循环的函数,它遍历具有不同维度的数据框列
【发布时间】:2013-10-04 21:22:33
【问题描述】:

编写循环是我存在的祸根。 我有这个功能,它有效:

rnd.data

它的目的是在依赖于相关数据框列的参数中模拟数据 对于我为其编写的第一个数据集只有 2 列我想模拟样本 但是我有不同数量的列的其他数据框 理想情况下,我会编写一个带有 for 循环的函数,该函数可以计算我想要输入的所有数据帧的样本,因为我需要模拟每个数据帧 1000 多个样本

我厌倦了把开头写成: rnd2.data 3){ 但后来卡住了下一步该做什么

任何帮助将不胜感激 谢谢!

【问题讨论】:

    标签: function


    【解决方案1】:

    这个函数可以让你在不循环的情况下做到这一点:

    ff<-function(x,r){
      apply(x,2,function(z) do.call(runif,as.list(c(r,range(z)))))
    }
    
    > set.seed(123)
    > x<-cbind(1:10,11:20,51:60)
    > ff(x,10)
              [,1]     [,2]     [,3]
     [1,] 3.588198 19.61150 59.00585
     [2,] 8.094746 15.08001 57.23523
     [3,] 4.680792 17.09814 56.76456
     [4,] 8.947157 16.15370 59.94843
     [5,] 9.464206 11.92632 56.90135
     [6,] 1.410008 19.09842 57.37677
     [7,] 5.752949 13.21479 55.89659
     [8,] 9.031771 11.37854 56.34728
     [9,] 5.962915 13.95129 53.60244
    [10,] 5.109533 19.59053 52.32402
    > 
    

    如果您想忽略某些列,只需调用,例如ff(x[,-1],10)ff(x[,2:3],10) 等。

    如果您想将此应用于数据框列表,则可以调用

    lapply(listOfData,ff,numberOfSamples)
    

    【讨论】:

    • 谢谢,但是我不断收到错误消息:match.fun(FUN) 中的错误:'rnd.data(x)' 不是函数、字符或符号
    • 我写的代码中没有rnd.data(x)。您要执行什么操作会导致该错误?
    • 没有错。对不起,我错误地修改了它。它像梦一样工作。谢谢!
    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 2017-07-04
    相关资源
    最近更新 更多