我正在阅读Hadley Wickham的高级R介绍,他说[(和+, - ,{等)是函数,所以[可以这样使用]
> x <- list(1:3, 4:9, 10:12)
> sapply(x, "[", 2)
[1] 2 5 11
Run Code Online (Sandbox Code Playgroud)
哪个是完美的,可以理解的.但是,如果[是子集所需的函数,确实]有另一种用法而不是语法吗?
我找到:
> `]`
Error: object ']' not found
Run Code Online (Sandbox Code Playgroud)
所以我假设它没有其他用途吗?
我正在尝试使用rangingGrob()在相同的.jpg中绘制两个图。我才刚刚开始学习网格和grobs,我想我知道问题出在哪里:pheatmap是一个网格对象,包含grob对象,不允许我将其放在rangingGrob中。这是真的?
我是否需要以某种方式将qplot放在一个网格中,将pheatmap放在一个网格中,然后将那些网格放在一个新的网格中?
library(grid)
library(gridExtra)
library(pheatmap)
library(ggplot2)
hmdat=rbind(c(1,2,3),
c(3,4,5),
c(5,6,7))
hm=pheatmap(hmdat)
qp=qplot(1,1)
lm=rbind(c(1,2,2),
c(1,2,2))
jpeg("plots.jpg")
arrangeGrob(qp,hm, layout_matrix=lm)
dev.off()
Run Code Online (Sandbox Code Playgroud)
上面的代码片段在使用时运行良好
arrangeGrob(qp,qp, layout_matrix=lm)
Run Code Online (Sandbox Code Playgroud) 我有一个矩阵(origmatrix),我想在每个列上执行一个函数.我想将此函数的结果放入另一个矩阵(newmatrix),该行的行号对应于原始矩阵中的列号.在真实数据集中有20000行具有复杂功能,因此我想使用一种类型的应用以便能够并行化项目.有没有办法让我从申请到新矩阵中获取数据?任何帮助将不胜感激!
origmatrix = matrix(1:50, 10, 5)
colnames(origmatrix) = letters[1:5]
newmatrix = matrix(0, 5,2)
colnames(newmatrix) = c("Identifier","mean")
boertje = function (x){
newlist[which(colnames(origmatrix)==x),2]= mean(origmatrix[,x])
}
sapply(colnames(origmatrix), boertje)
Run Code Online (Sandbox Code Playgroud) 我有两列包含数据.在比较这些列时,我FALSE在这一行上得到了回报,这让我很难过.
dat[82,"UG_accept_avg_total.x"]
## [1] 1.842105
dat[82,"UG_accept_avg_total.y"]
## [1] 1.842105
dat[82,"UG_accept_avg_total.x"]==dat[82,"UG_accept_avg_total.y"]
## [1] FALSE
Run Code Online (Sandbox Code Playgroud)
我读了这个问题的答案,这个问题解释了为什么我的问题出现了,但答案对我没有多大帮助,因为:
all.equal(dat[82,"UG_accept_avg_total.x"],dat[82,"UG_accept_avg_total.y"])
## "Mean relative difference: 1.427714e-07"
isTRUE(all.equal(dat[82,"UG_accept_avg_total.x"],dat[82,"UG_accept_avg_total.y"]))
## [1] FALSE
Run Code Online (Sandbox Code Playgroud)
我可以在小数点之后删除一些数字,因为3可能已经足够了,但是检查我的数据集中的所有数据字段(超过250000)来执行此操作将是相当浪费的资源使用.有人有更好的建议吗?有没有办法降低isTRUE(all.equal(x,y))的"灵敏度"?