如何在Excel中显示这个不同?

我在R中做了一些计算,我想把它制作成像这样的excel

DATA1 DATA2 54.364 2.05 56.532 54.21 41.485 65.8745 54.0546 75.156 

而是像这样来

 DATA1 DATA2 54.364 2.05 56.532 2.05 54.21 2.05 41.485 2.05 65.8745 2.05 54.0546 2.05 75.156 2.05 

我在Excel中生成它的函数是

 write.xlsx(c(data.frame(DATA1),data.frame(DATA2))) 

虽然data1值是54.364,56.532,54.21,41.485,65.8745,54.0546,75.156和data2 2.05

Excel有一个相当奇怪的“复制”function,它复制一个函数返回标量到调用范围内的每个单元格。 看来,这发生在你身上。

解决这个问题的一个方法是在直接调用函数的顶部使用Application.Caller 。 这将返回一个表示调用范围的Range对象。 然后,您可以用#N/A填充函数返回值。 您可以通过将varianttypes插入到您设置为VT_ERROR的数组中并将错误值设置为xlErrNa来实现此xlErrNa 。 您可以使用CVErr(xlErrNa)一步完成此操作。 使用#N #N/A填充与Excel对超大范围的函数返回数组的调用范围相匹配。

下面的代码也可以使用:(使用@ akrun的数据在https://stackoverflow.com/questions/25547210/how-to-produce-this-order-in-r

 DATA1 <- c(54.364, 56.532, 54.21, 41.845, 65.8745, 54.0546, 75.156) DATA2 <- 2.05 DATA3 <- c(2.2, 2.4, 2.32) outdf = data.frame(data1=numeric(), data2=numeric(), data3=numeric()) for(i in 1:length(DATA1)) outdf[i,]=c(DATA1[i],0,0) for(i in 1:length(DATA2)) outdf$data2[i]=DATA2[i] for(i in 1:length(DATA3)) outdf$data3[i]=DATA3[i] outdf data1 data2 data3 1 54.3640 2.05 2.20 2 56.5320 0.00 2.40 3 54.2100 0.00 2.32 4 41.8450 0.00 0.00 5 65.8745 0.00 0.00 6 54.0546 0.00 0.00 7 75.1560 0.00 0.00 

那么你可以用write.xlsx来使用outdf。