说我有以下R data.frame ZZZ:
( ZZZ <- structure(list(n = c(1, 2, NA), m = c(6, NA, NA), o = c(7, 8,
8)), .Names = c("n", "m", "o"), row.names = c(NA, -3L), class = "data.frame") )
## not run
n m o
1 1 6 7
2 2 NA 8
3 NA NA 8
Run Code Online (Sandbox Code Playgroud)
我想以矢量的形式知道我有多少非NA.我希望得到的答案是:
2, 1, 3
Run Code Online (Sandbox Code Playgroud)
当我使用命令时length(ZZZ),我得到了3,当然是data.frame中的向量数量,这是一个足够有价值的信息.
我有其他函数在这个data.frame上运行,并以向量的形式给我答案,但是,dang-it,length不会像那样运行.
警告......非常新手问题如下:
我试图绘制几个(X,Y)点的相当规则的分布,每个点与一个值相关联,让我们调用Z,它在-20到+20之间变化非常不规则.我对平滑感兴趣; 我想要点Z值根据平滑变化的调色板绘制,就像Gnuplot可以使用适当的平滑调色板一样.我已经尝试过基础R,ggplot2和latticeExtra,尽我所能,我可以提出以下几乎可以做到的事情:
library(lattice)
library(latticeExtra)
library(colorRamps)
df = read.table(file"whatever", header=T)
levelplot(Z~X*Y, df, panel=panel.levelplot.points, cex=0.2,
col.regions=colorRampPalette(c("red","white","blue"))(50))
Run Code Online (Sandbox Code Playgroud)
一个数据点如下:1302525 225167 -3.5
当我用最后一个代码行中的"50"绘制我的数据帧为3时,我得到红色,白色和蓝色的可预测的R再循环行为,重复五次,第16个颜色条段为白色.将3更改为7会导致更多的红色和蓝色阴影创建2个重复颜色范围段,并在颜色范围尝试回收时留下两个微红色.这表明使这个数字更大可以使颜色更精细.但如果我输入一个大于16的数字,那就是我得到的16个彩色片段,从红色到白色均匀变换为蓝色.但是我希望色标更精细,并且在完美的世界中,将Z的零强制为白色.
到目前为止我对R的经验是,当我不能做到这么简单的事情时,我错过了一个非常基本的概念.它是什么?
这似乎是他的ggplot2书中Hadley的一些例子的类似例子,但我似乎无法做到这一点.鉴于:
off = c(0, 2000, 4000, 6000, 25, 3000, 6050, 9000)
tim = c( 0, -100, -200, -300 -25, -125, -225, -325)
col = c( 1, 1, 1, 1, 2, 2, 2, 2)
dataf = data.frame(off, tim, col)
p = ggplot(dataf, aes(off, tim, color=col)) + geom_point() + geom_line()
p
Run Code Online (Sandbox Code Playgroud)
我认为这应该绘制这八个点并绘制一行通过前四个点col = 1,另一行绘制最后四个点col = 2.然而我最终得到的是一条红色和蓝色交替的线.
为什么?!
我需要创建一个方位角/距离颜色编码的图,就像使用'shape'包的跟随代码一样.
library(shape)
emptyplot(xlim=c(-5,10), main="color segment test case")
filledcircle(r1=1, r2=2, from=0, to=pi/6, col=intpalette(c("blue", "yellow","red"), numcol = 100),
val=(cbind(c(0,1),c(.0,.0))), zlim=c(0,1), mid=c(0.0,0.0))
filledcircle(r1=1, r2=2, from=pi/6, to=2*pi/6, col=intpalette(c("blue", "yellow","red"), numcol = 100),
val=(cbind(c(0,1),c(.1,.1))), zlim=c(0,1), mid=c(0.0,0.0))
filledcircle(r1=1, r2=2, from=2*pi/6, to=3*pi/6, col=intpalette(c("blue", "yellow","red"), numcol = 100),
val=(cbind(c(0,1),c(.2,.2))), zlim=c(0,1), mid=c(0.0,0.0))
filledcircle(r1=1, r2=2, from=3*pi/6, to=4*pi/6, col=intpalette(c("blue", "yellow","red"), numcol = 100),
val=(cbind(c(0,1),c(.3,.3))), zlim=c(0,1), mid=c(0.0,0.0))
filledcircle(r1=1, r2=2, from=4*pi/6, to=5*pi/6, col=intpalette(c("blue", "yellow","red"), numcol = 100),
val=(cbind(c(0,1),c(.4,.4))), zlim=c(0,1), mid=c(0.0,0.0))
filledcircle(r1=1, r2=2, from=5*pi/6, to=6*pi/6, col=intpalette(c("blue", "yellow","red"), numcol = 100),
val=(cbind(c(0,1),c(.5,.5))), zlim=c(0,1), mid=c(0.0,0.0))
filledcircle(r1=2, …Run Code Online (Sandbox Code Playgroud)