如果我想查看R中的长输出或变量,是否有更多的bash命令?
答案 0 :(得分:11)
为什么不使用内置的file.show?
more <- function(x) {
file <- tempfile()
sink(file); on.exit(sink())
print(x)
file.show(file, delete.file = T)
}
more(mtcars)
more(more)
答案 1 :(得分:3)
如果您使用ESS,您可以在闲暇时滚动浏览R输出缓冲区,当然也可以搜索等。只是说...
答案 2 :(得分:3)
对于我们这些不想使用Emacs的人...... ;-) @ Dirk
more <- function(x, n=6) {
i <- 1
while(i <= length(x)) {
j <- min(length(x),i+n-1)
print(x[i:j])
i <- i+n
if(i <= length(x)) readline()
}
}
这对所有对象都不是很好。这只是默认方法的一个例子。您需要为matrix
,data.frame
等编写方法
答案 3 :(得分:1)
我不相信,但它应该很容易创建。只需查看readline("\nType <Return> to go to the next page : ")
的用户输入,然后递归遍历对象。
答案 4 :(得分:1)
这是我的诀窍:我在Linux中使用screen
或byobu
,然后使用F7,它允许我来回滚动我想要的任何内容。然后,当我从more
获得更多信息时,我很少在bash中使用less
。 ;-) less
超过more
。非常麻烦。
另一个不错的多平台选项是RStudio,它允许您轻松地来回滚动。
答案 5 :(得分:0)
我很少滚动浏览R中的整个数据集。当我这样做时,我倾向于将其推送到CSV然后使用电子表格来仔细阅读。仅使用短块查看输出,我使用head()
或tail()
我当然已经被我的同事问过我tail(head))
(是的,在尾巴笑话中永远不会变老)
如果你只想看一个矢量,你可以这样做:
system("more", input=as.character(rnorm(1000)))
这对数据框或矩阵不起作用,因为input
参数需要一个字符向量。
修改强>
对于数据框和矩阵,您可以将我的“导出到CSV”和命令行more
组合在一起,如下所示:
myDF <- data.frame(a=rnorm(1000), b=rnorm(1000))
more <- function(dataFrame) {
myTempFile <- tempfile()
write.csv(dataFrame, file=myTempFile, row.names = F)
system(paste("more", myTempFile))
}
more(myDF)
答案 6 :(得分:0)
或者只使用sytem more
:
more<-function(x){
tempfile()->fn;
sink(fn);print(x);sink();
system(sprintf('more %s',fn));
system(sprintf('rm %s',fn));
}
我喜欢 ...或less
,因为我没有弄乱终端:
less<-function(x){
tempfile()->fn;
sink(fn);print(x);sink();
system(sprintf('less %s',fn));
system(sprintf('rm %s',fn));
}
两者都是* nixes;对于Windows,我认为最好根据edit
(和字符串连接)制作一些东西。