如何在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
填充函数返回值。 您可以通过将variant
types插入到您设置为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。