Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中为for循环中的渐进文件填充数据帧行_R_Dataframe_Apply_Assign - Fatal编程技术网

如何在R中为for循环中的渐进文件填充数据帧行

如何在R中为for循环中的渐进文件填充数据帧行,r,dataframe,apply,assign,R,Dataframe,Apply,Assign,我试图分析一些从实验测试中获得的数据,其中记录了几个变量。我已经在R中导入了一个数据帧,我想通过处理这些数据来获得一些统计信息。 特别是,我想用与导入的数据帧相同的变量名填充一个空数据帧,但要使用诸如平均值、中值、模式、最大值、最小值和分位数等统计特性作为每个变量的行。 输入数据帧类似于60列x 250k行 我已经使用apply实现了这一点,就像下面的代码行中针对单个输入文件所做的那样 df[1,] <- apply(mydata,2,mean,na.rm=T) df[2,] <-

我试图分析一些从实验测试中获得的数据,其中记录了几个变量。我已经在R中导入了一个数据帧,我想通过处理这些数据来获得一些统计信息。 特别是,我想用与导入的数据帧相同的变量名填充一个空数据帧,但要使用诸如平均值、中值、模式、最大值、最小值和分位数等统计特性作为每个变量的行。 输入数据帧类似于60列x 250k行

我已经使用
apply
实现了这一点,就像下面的代码行中针对单个输入文件所做的那样

df[1,] <- apply(mydata,2,mean,na.rm=T)
df[2,] <- apply(mydata,2,sd,na.rm=T)
...
实际上,我记不起这段代码给出的错误消息,但问题是我甚至无法运行它,因为它不工作

我是R的初学者,所以我没有太多使用这种语言的经验。有办法做到这一点吗?是否可以使用其他功能来代替应用和分配)

编辑:

我在这里添加了一个简单的表描述,它表示我正在使用的输入数据帧。很抱歉,这里的数据可视化很差。基本上,我使用的输入数据帧是.csv导入的文件,看起来像表格,第一行是列描述,也就是测量变量的名称,下面的行是获取的数据。我对每个文件中的每个变量进行了250000次采集,我有5-8个这样的文件作为我的输入

Current [A] | Force [N] | Elongation [%] | ...
—————————————————————————————————————

Value_a_1 | Value_b_1 | Value_c_1 | ...
我只想获得一个像这样的数据帧作为输出,具有相同的变量名称,但是具有统计值作为行。例如,第一行不是为每个变量获取的第一个值,而是每个变量的250k次采集的平均值。第二行是标准差,第三行是方差,依此类推。
我已经成功地为输出摘要统计信息构建了空数据帧,只包含列,还没有行。我只想填充它们,并在for循环中迭代执行此操作。

不确定数据是什么样子,但您可以执行以下操作,
lst
表示数据帧列表

lst <- list(iris[,-5],mtcars,airquality)
lapply(seq_along(lst), 
       function(x) sapply(lst[[x]],function(x)
         data.frame(Mean=mean(x,na.rm=TRUE),
                    sd=sd(x,na.rm=TRUE))))
如果所有文件都在同一目录中,请将工作目录设置为该目录,并使用
list.files()
ls()
沿输入文件移动


如果它们共享相同的列名,您可以
rbind
将结果绑定到单个数据集中。

您可以添加其中一个数据集的样本以及会发生什么情况吗?请按所示进行编辑。谢谢您的回答!我会尽快尝试的!嗨,尼尔森!实际上这个答案不起作用,因为mean和sd处理列表lst中包含的每个数据帧,但不处理该数据帧的每个列。因此,输出类似于[[1]][,1]表示NA sd NA,并警告“参数不是数字或逻辑:返回NA”。您能解释一下原因吗?没有样本数据,因此不确定哪里出了问题。使用
dput
提供数据。另外,请将您运行的代码添加到您的问题中。是的,对不起。我并不是想不惜任何代价使用foor循环,我只是想得到正确的结果。我知道你的答案和内置的数据帧配合得很好。可能问题出在我使用的对象的类中。内置dataframe返回一个类[1]“data.frame”,而我使用的类不同于[1]“tbl_df”“tbl”“data.frame”。今天晚上我会试着发dput,我现在正在打电话。嗨@NelsonGon!实际上,在我对输入文件使用“as.data.frame”之后,它工作得很好!
lst <- list(iris[,-5],mtcars,airquality)
lapply(seq_along(lst), 
       function(x) sapply(lst[[x]],function(x)
         data.frame(Mean=mean(x,na.rm=TRUE),
                    sd=sd(x,na.rm=TRUE))))
lapply(lst, sapply, function(x) 
data.frame(Mean = mean(x, na.rm = TRUE), sd = sd(x, na.rm = TRUE)))