【问题标题】:Error in wide to long format in r reshape2 packager reshape2 包中的宽到长格式错误
【发布时间】:2016-08-22 15:01:27
【问题描述】:

您好,我是 R 编程新手。

我想将数据列表从宽格式更改为长格式,但错误如下:

EA    UU    AR
0.455 1.106 0.568
1.406 0.710 0.262
1.124 1.406 0.312

改为:

EA 0.455
EA 1.406
EA 1.124
UU 1.106
UU 0.710
UU 1.406
AR 0.568
AR 0.262
AR 0.312

我使用的代码如下:

files <- list.files(path = ".", pattern = "*.txt", all.files = TRUE, full.names = FALSE, recursive = FALSE)

listy <- lapply(files, read.csv)

melt(listy)

write.table(melt(listy), file = "listofdata.txt", quote = FALSE, sep = " ", row.names = FALSE, col.names = FALSE)

出现的错误是:

No id variables; using all as measure variables

No id variables; using all as measure variables

No id variables; using all as measure variables

No id variables; using all as measure variables

No id variables; using all as measure variables

No id variables; using all as measure variables

感谢您的帮助。

【问题讨论】:

    标签: r format reshape2


    【解决方案1】:

    如果我们使用data.frames 中的list,请在每个list 元素中使用melt

     listN <- lapply(listy, function(x) melt(x))
    

    不清楚 OP 是将输出写入单个文件还是多个文件。

    如果是单个文件,rbind,将data.frameslist改为单个文件再使用write.csv

     dfN <- do.call(rbind, listN)
     write.csv(dfN, "dataLong.csv", row.names=FALSE, quote=FALSE)
    

    但是,如果这是作为单独的文件,则循环遍历 'dfN' 的 names 并写入它

     lapply(names(listN), function(nm) write.csv(listN[[nm]], 
                     paste0(nm, ".csv", row.names=FALSE, quote=FALSE)
    

    【讨论】:

    • 谢谢,但我能问一下 listN
    • @PeterChung x 代表listy 的每个元素,因为我们正在遍历列表元素。
    • 对不起我的笨拙,我不明白。那么 lapply () 里面的函数是什么。我有一个来自分离文件的数据列表,想在 R 中收集并将它们从宽格式更改为长格式并作为单个文件输出。
    • @PeterChung 如果您想作为单个文件,请使用第一个代码。函数调用是匿名调用。基本上,它的作用是遍历列名,根据其名称对listN (listN[[nm]]) 进行子集化,然后将其写为单独的文件(使用paste生成的文件名
    猜你喜欢
    • 2016-06-07
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多