【问题标题】:Using loop for data formatting in R在 R 中使用循环进行数据格式化
【发布时间】:2013-05-22 09:49:54
【问题描述】:

我想以相同的方式格式化很多 df - 是否可以编写循环?我们称它们为 df1、df2、df3、...

df1$timestamp<-as.POSIXct(df1$timestamp,format="%Y-%m-%d %H:%M:%S")
df1.zoo<-zoo(df1[,-1],df1[,1])

试过了:

x<-list(df1,df2,df3)
lapply(x, x$timestamp<-as.POSIXct(x$timestamp,format="%Y-%m-%d %H:%M:%S"))

收到警告不知道如何应用该功能.... 谢谢!

【问题讨论】:

  • 将 data.frames 放在一个列表中并使用lapply。这就是R方式。在 R 中实际上需要 while 循环是非常罕见的。
  • 您的 I found 部分似乎与问题完全无关。除非work.on.gene(i)dfi 有所作为?
  • 好吧,这就是它不起作用的原因;-) 我只是想因为循环 - 通常是 df1 - df3 和格式化的东西,如何处理。谢谢

标签: r loops zoo


【解决方案1】:

lapply 函数需要传递一个函数,而不是表达式。试试:

x <- list(df1, df2, df3)
x2 <- lapply(x, function(y) {
  y$timestamp <- as.POSIXct(y$timestamp, format="%Y-%m-%d %H:%M:%S")
  y
} )

我将函数参数更改为y,以免与列表x 混淆。这会修改当前的 df 并返回它,lapply 然后将修改后的数据帧收集到一个新列表中(我保存在 x2 但您可以保存回 x

如果您想就地编辑数据框,那么宏可能会更好地工作,请参阅 gtools 包中的 defmacro 函数并阅读其帮助页面上引用的文章。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2020-11-30
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多