小编Xiz*_*zam的帖子

如果`[`是R中子集化的函数,那么什么是`]`?

我正在阅读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)

所以我假设它没有其他用途吗?

syntax primitive r

11
推荐指数
1
解决办法
445
查看次数

在ArrangeGrob中使用Pheatmap

我正在尝试使用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)

r grob pheatmap

6
推荐指数
1
解决办法
1287
查看次数

在R中的并行sapply中设置矩阵行中的值

我有一个矩阵(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)

r global-variables apply

3
推荐指数
1
解决办法
461
查看次数

对于平等的比较,两个看似相等的值给出了FALSE

我有两列包含数据.在比较这些列时,我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))的"灵敏度"?

comparison r

0
推荐指数
1
解决办法
372
查看次数

标签 统计

r ×4

apply ×1

comparison ×1

global-variables ×1

grob ×1

pheatmap ×1

primitive ×1

syntax ×1