R中是否有一个功能允许您指定打印输出位置,如SAS可以做到的?

时间:2013-06-22 03:40:21

标签: r sas

在SAS中我可以做到

put @5 value1
    @12 "="
    @24 estimate1
;

我可以在R中使用像“cat”这样的函数来打印出定位的值和对象吗?

如果我的问题清楚,请告诉我。

提前致谢!

2 个答案:

答案 0 :(得分:6)

这是一个猜测。这将创建一个长空字符串,然后通过substr:

将值放入其中
fixput <- function(...,nchar=80){    
  s=paste0(rep(" ",nchar),collapse="")
  args=list(...)
  for(arg in seq(1,length(args),by=2)){
    substr(s,args[arg],nchar)=as.character(args[arg+1])
  }
  s    
}

用法:

> value1=1.234
> estimate1=pi
> fixput(5, value1, 12, "=", 24, estimate1)
[1] "    1.234  =           3.14159265358979                                         "

注意它返回一个字符串,所以如果你想在脚本中输出它,你可以只cat它。另请注意,如果插值值很长,会发生什么:

> value1=pi
> fixput(5, value1, 12, "=", 24, estimate1)
[1] "    3.14159=65358979   3.14159265358979                                         "

答案 1 :(得分:3)

sprintf()是您的朋友 - 从帮助页面引用

  

C函数sprintf的包装器,它返回一个包含文本和变量值的格式化组合的字符向量。

请参阅帮助页面?sprintf中的示例,例如

sprintf("min 10-char string '%10s'", c("a", "ABC", "and an even longer one"))

将产生:

[1] "min 10-char string '         a'"            
[2] "min 10-char string '       ABC'"            
[3] "min 10-char string 'and an even longer one'"

以下是关于实数的工作

n <- 1:8
sprintf(paste0("e with %2d digits = %.", n, "g"), n, exp(1))

产生

 [1] "e with  1 digits = 3"                  
 [2] "e with  2 digits = 2.7"                
 [3] "e with  3 digits = 2.72"               
 [4] "e with  4 digits = 2.718"              
 [5] "e with  5 digits = 2.7183"             
 [6] "e with  6 digits = 2.71828"            
 [7] "e with  7 digits = 2.718282"           
 [8] "e with  8 digits = 2.7182818"