我在R中创建了3个数据变量,每个变量1中都有以下信息:坐标
x y
0.1 0.1
变量2:mz
100.0
100.1
100.2
100.3
....
....
999.9
变量3:强度
4.533154e-01
2.997068e-01
4.542300e-01
2.905961e-01
4.636095e-01
.....
.....
现在,我想将此信息导出为文本文件。这样我有以下格式
x y
0.1 0.1
100.0 2.905961e-01
100.1 4.533154e-01
100.2 2.997068e-01
100.3 4.542300e-01
....
....
999.9 2.905961e-01
我在R中为此编写了以下代码:
spectralData<-cbind(mz, intensity, deparse.level = 0)
foo<-c('%2.1f', '%2.8f')
cbar<-sapply(1:2,function(j) sprintf(foo[j],spectralData[,j]))
write(t(cbar),'/Desktop/cbar.txt',ncolumns=2)
data<-rbind(coordinate,spectralData,deparse.level = 0)
write.table(data, "/Desktop/test.txt", row.names = FALSE)
我收到了文本文件,但是有两个问题。首先,我将行号作为附加列。我应该如何避免这种情况?其次,对于mz和强度列,数字的精度都会发生变化。小数点后如何获得相同的精度?这是导出的数据的样子
"x" "y"
"1" 0.100000001490116 0.100000001490116
"2" 100 -1.77635683940025e-15
"3" 100.099998474121 0.0266907754084524
"4" 100.199996948242 0.0533815508169102
"5" 100.300003051758 3.5527136788005e-15
"6" 100.400001525879 0.135286505970676
"7" 100.5 0.0286329399926419
如果您希望每一列都具有特定的精度(我相信这是问题的一部分),那么一种方法是首先通过sprintf
语句运行数据框架以创建字符串数组。然后用于write
将数据写入文件-引号将不会直通。这是一个例子。
fbar<-sin((1:10)/10)
fbar<-matrix(fbar,5)
#fbar
# [,1] [,2]
#[1,] 0.09983342 0.5646425
#[2,] 0.19866933 0.6442177
#[3,] 0.29552021 0.7173561
#[4,] 0.38941834 0.7833269
#[5,] 0.47942554 0.8414710
foo<-c('%2.8f', '%2.3f')
cbar<-sapply(1:2,function(j) sprintf(foo[j],fbar[,j]) )
write(t(cbar),'cbar.txt',ncolumns=2)
#cbar
#0.09983342 0.565
#0.19866933 0.644
#0.29552021 0.717
#0.38941834 0.783
#0.47942554 0.841
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句