R 如何在列表元素之间添加虚线?

R 如何在列表元素之间添加虚线?,r,R,我有这样一份清单: x <- 1 y <- 2 z <- "something" my_list <- list("x" = x, "y" = y, "z" = z) > my_list $x [1] 1 $y [1] 2 $z "something" 根据我的评论,您可以运行for循环,打印列表中的每个元素,然后打印“--------------”,然后打印列表中的下一个元素,将其放入函数中,您就完成了,例如 lsprint <- function(lis

我有这样一份清单:

x <- 1
y <- 2
z <- "something"
my_list <- list("x" = x, "y" = y, "z" = z)
> my_list
$x
[1] 1
$y
[1] 2
$z
"something"

根据我的评论,您可以运行for循环,打印列表中的每个元素,然后打印
“--------------”
,然后打印列表中的下一个元素,将其放入函数中,您就完成了,例如

lsprint <- function(list){
  for (i in 1:length(list)){
    print(names(my_list)[i])
    print(my_list[[i]])
    print('--------------------')
  }

}
lsprint(my_list)

编辑:添加了,这样你就可以得到这个名字了,类似这样的名字可能会有用

mylistprint <- function(x){

    nn <- names(x)
    ll <- length(x)
    if (length(nn) != ll) {
      nn <- paste("Component", seq.int(ll))
      }
    for (i in seq_len(ll)) {
      cat(nn[i], ":\n")
      print(x[[i]])
      cat("\n")
      cat(strrep("-", 25))
      cat("\n")
    }
    invisible(x)
}

mylistprint(my_list)

使用mapply
可能更好的方法是使用
mapply
,或者至少它要短得多

fun1 <- function(x,y) cat(paste0('$', x), y,strrep("-", 25), sep = '\n')
x <- mapply(fun1, names(my_list), my_list)
单行

x <- mapply(function(x,y) cat(paste0('$', x), y,strrep("-", 25), sep = '\n'), names(my_list), my_list)

x您可以通过在控制台中键入
print.list
来查看列表的打印方法。如果要修改打印行为,可以制作自己版本的
print.list
。这是否用于打印@arkun是!这是给你的printing@HectorHaffenden这是个好主意,谢谢。它不显示列表项的原始名称,如
$x
,如果您需要查找某些内容,这可能会带来不便@马库斯回答说,不幸的是,他删除了它,这是一个很好的选择。一个改进可能是
strrep(“-”,25)
而不是
paste0(rep(“-”,25),collapse=“”)
我添加了
strrep(“-”,25)
来代替
paste0(rep(“-”,25),collapse=“”)
,这是一个很大的改进。
x :
[1] 1

-------------------------
y :
[1] 2

-------------------------
z :
[1] "something"

-------------------------
fun1 <- function(x,y) cat(paste0('$', x), y,strrep("-", 25), sep = '\n')
x <- mapply(fun1, names(my_list), my_list)
$x
1
-------------------------
$y
2
-------------------------
$z
something
-------------------------
x <- mapply(function(x,y) cat(paste0('$', x), y,strrep("-", 25), sep = '\n'), names(my_list), my_list)
print.list <- function(list) {
  x <- mapply(function(x,y) cat(paste0('$', x), y,strrep("-", 25), sep = '\n'), names(list), list)
}