gpt4 book ai didi

r - 用整数矩阵子集data.frame

转载 作者:行者123 更新时间:2023-12-04 08:55:58 25 4
gpt4 key购买 nike

我一直遇到这个问题,并且想知道是否有一个简单的解决方法。在某些情况下,我认为考虑将矩阵子集化更合乎逻辑

N <- 12
N.NA <- 6
dat <- data.frame(V1=runif(N),V2=runif(N))
sel.mat <- matrix(c(sample(seq(N),N.NA),sample(ncol(dat),N.NA,replace=TRUE)),ncol=2)

这适用于选择,但不适用于替换:
> dat[sel.mat]
[1] 0.2582569 0.8455966 0.8828083 0.5384263 0.9574810 0.5623158
> dat[sel.mat] <- NA
Error in `[<-.data.frame`(`*tmp*`, sel.mat, value = NA) :
only logical matrix subscripts are allowed in replacement

我意识到错误消息是有原因的(如果您有多个替换指向同一个元素,它将不知道要怎么做),但这并不能阻止R允许在向量上进行整数替换(例如 dat$V1[c(2,3)] <- NA)。

是否有方便的方法可以用整数矩阵替换?

最佳答案

FWIW,使用替换进行矩阵索引确实可以在当前R-devel快照中使用(并将成为R-3.0.0的一部分)。显然,R-core中的某个人拥有与您相同的愿望。

R-devel NEWS file中所述:

Matrix indexing of dataframes by two-column numeric indices is now supported for replacement as well as extraction.



演示:
dat[sel.mat]
## [1] 0.3355509 0.4114056 0.2334332 0.6597042 0.7707762 0.7783584
dat[sel.mat] <- NA
dat[sel.mat]
## [1] NA NA NA NA NA NA

R.version.string
# [1] "R Under development (unstable) (2012-12-29 r61478)"

关于r - 用整数矩阵子集data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com