创建具有一定数量字符的变量

时间:2013-09-10 11:35:54

标签: r width write.table

我需要生成具有一些要求的.dat文件,以便由特定软件进行分析。 .dat文件的格式应该是:在ID列中具有一定的固定宽度,并且一起显示项目响应值,而不显示分隔符。完全是这样的:

(ID)   (i1i2i3...values) 
1      1234
2      1234
3      1234
4      1234
...
2365   1234

我可以通过IDfixed <- sprintf("%04d", ID)获取固定宽度字符,并在此代码中包含变量:

  for(i in 0:5) {
  for (j in 1:5) {
    filename <- paste("Factor",j, "_", "Facet",i+1, "_", "ID", ".dat", sep="")
    write.table(cbind(IDfixed, data[,c(2*i+1,2*i+2),j]), filename, col.names=F, row.names=F)
  }
}

输出没有这些""个字符 - 它必须与前一个表具有相同的格式。结果样本:

     [,1]   [,2] [,3]
[1,] "0001" "2"  "1" 
[2,] "0002" "2"  "3" 
[3,] "0003" "5"  "5" 
[4,] "0004" "3"  "3" 
[5,] "0005" "3"  "5"

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

试试这个:

# sample data
ID <- c(1, 11, 111, 1111)

# convert ID to character, pad with leading zeros to a fixed width of 4
IDfixed <- sprintf("%04d", ID)

IDfixed
# [1] "0001" "0011" "0111" "1111"

修改 write.table的默认行为是“任何字符或因子列都将被双引号包围”(quote = TRUE)。要避免将“ID”中的""元素写入文件,请使用quote = FALSE