我对这个网站很新,我在使用sprintf时遇到了问题。我想要做的是以下内容:
我需要创建一个带有标题的文本文件(空格分隔并且必须维护该特定空间),在这之下我需要复制一些由X行组成的数字(取决于数据,我会读到一个大的由数千行组成的表,但对于每个ID,将有可变数量的行;这不是一个主要问题,因为我可以循环它们)。我的问题是我无法对齐标题下方的数字。
setwd("C:\\Example\\formatting")
我的数据是CSV格式,所以我读到了:
s100 = read.csv("example.csv", header=T)
然后我拿出我感兴趣的列并以这种方式转换它:
SID1 = as.vector(as.matrix(s100$Row1))
SID2 = as.vector(as.matrix(s100$Row2))
SID3 = as.vector(as.matrix(s100$Row3))
SIDN = as.vector(as.matrix(s100$RowN))
然后我有以下内容(不要担心这些字母,那部分到某一点真的很容易,当我需要阅读SID时,我卡在最后:
sink("Example.xxx", append = T)
cat("*Some description goes here\n")
这一直持续到我需要把数字放下来。所以,当我到达这篇文章时:
cat("@ SAB SSD TAR.....", sep = "\n")
我现在需要在SAB,SSD,TAR等下对齐数字等等。 所以,现在我执行以下操作(我只尝试先使用一列和一个标题):
cat("SAB ", sep = "\n")
cat(sprintf("%s\n", SID1, sep="\n" ))
但是,我最终得到的是:
SAB
0.30
0.40
0.50
而不是
SAB SSD TAR
0.30 0.40 10
0.40 0.80 40
0.50 0.90 00
.... .... ...
所以我的两个问题是:
我希望我一直很清楚,而不是凌乱,这似乎是一个简单的解决方案,但我对R和编程的知识只能达到某一点。
提前感谢您的帮助!
答案 0 :(得分:0)
我认为问题在于你对sprintf
的呼唤。 SID1
提供值向量,但您的字符串中只有一个接受输入的位置。如何用
cat(paste(SID1, collapse="\n"))
EDIT / UPDATE:
这是一个可行的示例(xx
表示已合并到矩阵或数据框中的SID数据)
library(MASS)
xx <- matrix(rnorm(100),10)
write.matrix(round(xx, 2))