【发布时间】:2018-02-17 18:59:27
【问题描述】:
我有一个包含 30 个数据框的列表。
我想创建一个向量,其中包含数据框列表中所有 30 个数据框的其中一列的第 n 个元素的标准差。我认为我没有解释清楚。但是我的 for 循环的代码应该很清楚。
FFT233_sd <- list()
for (i in 1:431999) {FFT233_sd[[i]] <- sd(c(FFT233_data[[1]][i,6], FFT233_data[[2]][i,6], FFT233_data[[3]][i,6], FFT233_data[[4]][i,6], FFT233_data[[5]][i,6], FFT233_data[[6]][i,6], FFT233_data[[7]][i,6], FFT233_data[[8]][i,6], FFT233_data[[9]][i,6], FFT233_data[[10]][i,6], FFT233_data[[11]][i,6], FFT233_data[[12]][i,6], FFT233_data[[13]][i,6], FFT233_data[[14]][i,6], FFT233_data[[15]][i,6], FFT233_data[[16]][i,6], FFT233_data[[17]][i,6], FFT233_data[[18]][i,6], FFT233_data[[19]][i,6], FFT233_data[[20]][i,6], FFT233_data[[21]][i,6], FFT233_data[[22]][i,6], FFT233_data[[23]][i,6], FFT233_data[[24]][i,6], FFT233_data[[25]][i,6], FFT233_data[[26]][i,6], FFT233_data[[27]][i,6], FFT233_data[[28]][i,6], FFT233_data[[29]][i,6], FFT233_data[[30]][i,6]))}
for 循环有效,但显然很慢。有人告诉我应该使用 lapply,但我不明白该怎么做。我尝试了以下方法:
results2738 <- lapply( FFT2738_data , function(x) {sd(x) } )
但它导致了以下错误:
Show Traceback
Rerun with Debug
Error in is.data.frame(x) :
(list) object cannot be coerced to type 'double' In addition: Warning message:
In mean.default(x) : argument is not numeric or logical: returning NA
如果有人可以建议我调查的资源,我会很感激。
【问题讨论】:
-
将你的 30 个 data.frames 堆叠成一个,遵循 Gregor 的答案stackoverflow.com/a/24376207 的“组合”部分,我想这将是一个更简单的操作。