格式化,R中的Sprintf
我是这个网站的新手,在R中使用sprintf时遇到了一个问题。简单地说,我想做的是:格式化,R中的Sprintf,r,format,printf,R,Format,Printf,我是这个网站的新手,在R中使用sprintf时遇到了一个问题。简单地说,我想做的是: SAB 0.30 0.40 0.50 我需要创建一个带有标题的文本文件,标题以空格分隔,并且必须保持特定的空格,在该空格下方我需要复制一些由X行组成的数字,这取决于数据,我将读取一个由数千行组成的大表,但对于每个ID,将有一个可变的行数;这不是一个大问题,因为我可以循环使用它们。我的问题是我无法对齐标题下方的数字 setwd("C:\\Example\\formatting") 我的数据是CSV格式的,
SAB
0.30
0.40
0.50
我需要创建一个带有标题的文本文件,标题以空格分隔,并且必须保持特定的空格,在该空格下方我需要复制一些由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
.... .... ...
所以我的两个问题是:
如何解决上述问题?
因为在该标题的开头,我在SAB之前有一个@间隔,我如何相应地对齐我的所有数字?
我希望我已经很清楚,而不是混乱,这似乎是一个简单的解决方案,但我的R和编程知识只上升到一定程度
提前感谢您的帮助 我认为问题在于你打电话给sprintf。SID1提供了一个值向量,但在字符串中只有一个位置接受输入。把最后一行换成另一行怎么样
cat(paste(SID1, collapse="\n"))
编辑/更新:
下面是一个可能有效的示例xx表示已组合到矩阵或数据帧中的SID数据
library(MASS)
xx <- matrix(rnorm(100),10)
write.matrix(round(xx, 2))
非常感谢你的建议!但是如果我需要在它旁边添加另一个SID…1,2,N…以给定的距离将它们隔开,例如:@SAB SSD TAR 0.10 0.09 1.00但是如果我需要在它旁边添加另一个SID…1,2,N…以给定距离将它们隔开,例如:“@SAB SSD TAR”“0.10 0.09 1.00”“0.30 0.10 0.09”“……”我试着像上面写的表格一样写上面这一行。啊,是的。也许您可以将SIDxx数据组合成一个矩阵,然后使用MASS包中的write.matrix函数。我将对上面的内容进行编辑,给出一个例子。太好了,明天早上我会在办公室试试。我会告诉你事情的进展。我没想过要看包裹。谢谢你的建议!