将列表写入文本文件,保留名称,R

Jim*_* Bo 8 r list

我想写一个列表到文本文件,保留名称.

这类似于R:打印列表到文本文件,但是我想在每行的开头打印出名称:

> print(head(mylist,2))
$first
[1] 234984  10354  41175 932711 426928
$second
[1] 1693237   13462

mylist.txt
first   234984  10354  41175 932711 426928
second  1693237   13462
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

非常感谢.

42-*_*42- 12

cat函数将打印到设备(默认情况下为控制台)并且不添加任何常用注释,但它不能接受列表作为参数,因此所有内容都需要是原子矢量.的deparse( substitute())开局是恢复被传递给函数列表的名称的方式.只是names(x)在函数内部使用无法恢复原始参数的名称.

 mylist <- list(first =c( 234984,  10354,  41175, 932711, 426928), 
                second =c(1693237, 13462))
 fnlist <- function(x){ z <- deparse(substitute(x))
                         cat(z, "\n")
                         nams=names(x) 
                   for (i in seq_along(x) ) cat(nams[i],  x[[i]], "\n")}
 fnlist(mylist)
mylist 
second 234984 10354 41175 932711 426928 
first 1693237 13462 
Run Code Online (Sandbox Code Playgroud)

此版本将输出一个文件(如果您想要名称和值之间的选项卡,则可以替换"\ t"

fnlist <- function(x, fil){ z <- deparse(substitute(x))
                         cat(z, "\n", file=fil)
                         nams=names(x) 
                   for (i in seq_along(x) ){ cat(nams[i], "\t",  x[[i]], "\n", 
                                            file=fil, append=TRUE) }
                         }
 fnlist(mylist, "test")
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 6

您可以获得所需字符串的向量:

sapply(names(mylist),function(x) paste(x,paste(mylist[[x]],collapse=" ")))
                                   first 
"first 234984 10354 41175 932711 426928" 
                                  second 
                  "second 1693237 13462"
Run Code Online (Sandbox Code Playgroud)

然后你可以用write或写它writeLines.