在SAS中我可以做到
put @5 value1
@12 "="
@24 estimate1
;
我可以在R中使用像“cat”这样的函数来打印出定位的值和对象吗?
如果我的问题清楚,请告诉我。
提前致谢!
答案 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"