小编her*_*dom的帖子

R - 在%in%中使用的样本修改正在进行子集化的数据帧

不确定我是否正确标题,因为我不完全理解以下行为的原因:

dfSet <- data.frame(ID = sample(1:15, size = 15, replace = FALSE), va1 = NA, va3 = 0, stringsAsFactors = FALSE)

dfSet[1:10, ]$va1 <- 'o1'
dfSet[11:15, ]$va1 <- 'o2'

dfSet[dfSet$ID %in% sample(dfSet[dfSet$va1 == 'o1', ]$ID, 7, replace = FALSE), ]$va3 <- 1

print(length(unique(dfSet$ID)))
Run Code Online (Sandbox Code Playgroud)

我希望最终的印刷品显示15,但事实并非如此.而是出现13或14并且dfSet被修改,至少有两行具有相同的ID.看来这部分代码:

dfSet[dfSet$ID %in% sample(dfSet[dfSet$va1 == 'o1', ]$ID, 7, replace = FALSE), ]$va3 <- 1
Run Code Online (Sandbox Code Playgroud)

修改$ ID列 - 我不知道为什么?

解决方法:

temp <- sample(dfSet[dfSet$va1 == 'o1', ]$ID, 7, replace = FALSE)
dfSet[dfSet$ID %in% temp, ]$va3 <- 1
Run Code Online (Sandbox Code Playgroud)

在这种情况下,一切都按预期工作 - …

r sample subset

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

标签 统计

r ×1

sample ×1

subset ×1