【问题标题】:r llply lapply usage without losing dataframes namesr llply lapply 使用而不丢失数据帧名称
【发布时间】:2014-03-13 19:13:06
【问题描述】:

总体情况

我的测量设备的界面无法保存任何进一步的信息,但它在测量其值时生成的 csv 的名称。因此,我使用了一组系统的缩写来解释不断变化的参数,例如浓度、酶、原料、缓冲液等,这结合形成了我的 csv 文件的标题,它形成了我现在所在的 data.frames 的名称试图读出名称,将它们与其余数据结合起来,形成我可以用来进行回归的表格。

问题:

我刚刚注意到我在列表中丢失了data.frames 的名称, 我可以在每次调用 lapply 后重命名它们,但这似乎不是一个合适的解决方案。

我找到了使用 llply 的建议,但我也无法教它保留名称。

# loads plyr package
library(plyr)

# generates a showcase list of dataframes, 
data <- list(data.frame(c(1,2),c(3,3)),data.frame(c(1,2),c(3,3)),data.frame(c(1,2),c(3,3)),data.frame(c(1,2),c(3,3)))

# assigns names to dataframe
names(data) <- list("one","two", "tree", "four")

使用数据框名称将“o”传递给列,这部分工作正常, 但是运行之后名字就丢失了

data <- lapply(X = seq_along(data), 
  FUN = function(i){    
  x <- data[[i]]
  if (gsub("([(a-z)]).*","\\1", names(data)[i]) == "o") {x$enz <- "o"}
  return(x)}, 
  USE.NAMES = TRUE)  

llply 相同,按预期运行,但也不保留名称,尽管我认为我可以解决该特定问题(引用:“llply 相当于 lapply,除了它会保留标签并可以显示进度条。”)

data <- llply(seq_along(data), function(i){    
                 x <- data[[i]]
                 if (gsub("([(a-z)]).*","\\1", names(data)[i]) == "o") {x$enz <- "o"}
                 return(x)})  

我会非常感谢提示如何解决这个问题而没有类似的东西

name(data) &lt;- list.with.the.names

在每个 llply ore lapply 调用之后。

【问题讨论】:

  • 如果“大部分信息都存储在 data.frames 名称中”,您显然拥有untidy data。您应该纠正这一点并从那里继续。
  • 有趣的文章,但不幸的是,在我在实验室构建实验设置期间,我的数据结构是我最不关心的问题,所以我现在必须清理我的数据并使用我的现在得到了。请参阅编辑后的“总体情况”
  • 好吧,将这些数据作为列添加到 data.frames 中(并可能借此机会对其进行解析,这样您就有了感兴趣的实际值,而不仅仅是您的代码)。没有人强迫您将其保留在名称中。

标签: r plyr lapply names


【解决方案1】:

做这样的事情:

for (i in seq_along(data)) data[[i]]$name <- names(data)[i]

do.call(rbind, data)
#       c.1..2. c.3..3. name
#one.1        1       3  one
#one.2        2       3  one
#two.1        1       3  two
#two.2        2       3  two
#tree.1       1       3 tree
#tree.2       2       3 tree
#four.1       1       3 four
#four.2       2       3 four

然后从那里继续。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-30
    • 2020-09-16
    • 2011-12-19
    • 2011-03-30
    • 1970-01-01
    • 2018-06-04
    • 2012-06-01
    • 2020-10-14
    相关资源
    最近更新 更多