我想将列表写入文本文件,并保留名称。
这类似于 R: Print list to a text file但我也想在每行的开头打印出名称:
> 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
有什么想法吗?
非常感谢。
最佳答案
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
此版本将输出一个文件(如果您想在名称和值之间使用制表符,则可以替换“\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")
关于list - 将列表写入文本文件,保留名称,R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8261590/