我想写一个列表到文本文件,保留名称.
这类似于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)
您可以获得所需字符串的向量:
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.