相关疑难解决方法(0)

有什么用?

我正试图处理无处不在的which功能.在我开始阅读问题/答案之前,我从未发现它的必要性.而我仍然没有.

据我了解,which采用布尔向量并返回一个弱的较短向量,其中包含元素的索引,这些索引为true:

> seq(10)
 [1]  1  2  3  4  5  6  7  8  9 10
> x <- seq(10)
> tf <- (x == 6 | x == 8)
> tf
 [1] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
> w <- which(tf)
> w
[1] 6 8
Run Code Online (Sandbox Code Playgroud)

那么我为什么要使用which而不是直接使用布尔向量?我可能会看到一些带有巨大载体的记忆问题,因为length(w)<< length(tf),但这并不令人信服.并且帮助文件中有一些选项不会增加我对此功能的可能用途的理解.帮助文件中的示例也没有太大帮助.

为清晰起见编辑 - 我理解which返回索引.我的问题是关于两件事:1)为什么你需要使用索引而不是仅使用布尔选择器向量?和2)什么有趣的行为which可能会使它最好只是用一个量化的布尔比较?

r

40
推荐指数
6
解决办法
7万
查看次数

使用带有NA-continaing数据的ggpairs

ggpairsGGally包中看起来非常有用,但是当NA数据集中的任何地方存在时它似乎失败:

#require(GGally)
data(tips, package="reshape")
pm <- ggpairs(tips[,1:3]) #works just fine

#introduce NA
tips[1,1] <- NA
ggpairs(tips[,1:3])
> Error in if (lims[1] > lims[2]) { : missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

我没有看到任何处理NA值的文档,并且ggpairs(tips[,1:3], na.rm=TRUE)(不出所料)解决方案不会更改错误消息.

我有一个数据集,其中可能有10%的值NA随机分散在整个数据集中.因此na.omit(myDataSet)将删除大部分数据.有没有办法解决?

r ggplot2

9
推荐指数
1
解决办法
3142
查看次数

在没有For循环的情况下替换或插入R中的NA值

有没有更好的方法在数据框中进行观察并估算NA值?我已经整理了一个似乎可以完成工作的'for循环',用行的平均值交换NAs,但我想知道是否有更好的方法不使用for循环来解决这个问题 - 也许一个内置的R功能?

# 1. Create data frame with some NA values. 

rdata <- rbinom(30,5,prob=0.5)
rdata[rdata == 0] <- NA
mtx <- matrix(rdata, 3, 10)
df <- as.data.frame(mtx)  
df2 <- df

# 2. Run for loop to replace NAs with that row's mean.

for(i in 1:3){            # for every row
x <- as.numeric(df[i,])   # subset/extract that row into a numeric vector
y <- is.na(x)             # create logical vector of NAs
z <- !is.na(x)            # create logical vector of non-NAs
result …
Run Code Online (Sandbox Code Playgroud)

replace for-loop r na

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

标签 统计

r ×3

for-loop ×1

ggplot2 ×1

na ×1

replace ×1