首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分配给is.na(clinical.trial$age)

分配给is.na(clinical.trial$age)
EN

Stack Overflow用户
提问于 2017-06-14 20:13:40
回答 3查看 171关注 0票数 8

我正在查看代码from here,它的开头是这样的:

代码语言:javascript
复制
## generate data for medical example 
clinical.trial <-
    data.frame(patient = 1:100,
               age = rnorm(100, mean = 60, sd = 6),
               treatment = gl(2, 50,
                 labels = c("Treatment", "Control")),
               center = sample(paste("Center", LETTERS[1:5]), 100, replace = 
TRUE))

## set some ages to NA (missing) 
is.na(clinical.trial$age) <- sample(1:100, 20)

我看不懂最后一行。LHS是所有假值的向量。RHS是从向量1:100中选择的20个数字的向量。我不明白这种任务。这是如何导致clinical.trial$age获得一些NA值的?这种任务有名字吗?充其量我会说,RHS上的布尔向量通过循环获得分配给它的数字。

EN

回答 3

Stack Overflow用户

发布于 2017-06-14 20:24:49

is.na(x) <- value被翻译为'is.na<-'(x, value)

你可以把'is.na<-'(x, value)想象成“assign NA to x,at position value”。

一个更好、更直观的说法可能是assign_NA(to = x, pos = value)

关于其他类似的函数,我们可以在基础包中找到:

代码语言:javascript
复制
x <- as.character(lsf.str("package:base"))
x[grep('<-', x)]
#>  [1] "$<-"                     "$<-.data.frame"         
#>  [3] "@<-"                     "[[<-"                   
#>  [5] "[[<-.data.frame"         "[[<-.factor"            
#>  [7] "[[<-.numeric_version"    "[<-"                    
#>  [9] "[<-.data.frame"          "[<-.Date"               
#> [11] "[<-.factor"              "[<-.numeric_version"    
#> [13] "[<-.POSIXct"             "[<-.POSIXlt"            
#> [15] "<-"                      "<<-"                    
#> [17] "attr<-"                  "attributes<-"           
#> [19] "body<-"                  "class<-"                
#> [21] "colnames<-"              "comment<-"              
#> [23] "diag<-"                  "dim<-"                  
#> [25] "dimnames<-"              "dimnames<-.data.frame"  
#> [27] "Encoding<-"              "environment<-"          
#> [29] "formals<-"               "is.na<-"                
#> [31] "is.na<-.default"         "is.na<-.factor"         
#> [33] "is.na<-.numeric_version" "length<-"               
#> [35] "length<-.factor"         "levels<-"               
#> [37] "levels<-.factor"         "mode<-"                 
#> [39] "mostattributes<-"        "names<-"                
#> [41] "names<-.POSIXlt"         "oldClass<-"             
#> [43] "parent.env<-"            "regmatches<-"           
#> [45] "row.names<-"             "row.names<-.data.frame" 
#> [47] "row.names<-.default"     "rownames<-"             
#> [49] "split<-"                 "split<-.data.frame"     
#> [51] "split<-.default"         "storage.mode<-"         
#> [53] "substr<-"                "substring<-"            
#> [55] "units<-"                 "units<-.difftime"

'fun<-'(x, val)等同于fun(x) <- val的意义上,所有操作都是相同的。但在那之后,它们的行为都像任何普通函数一样。

R手册:3.4.4 Subset assignment

票数 5
EN

Stack Overflow用户

发布于 2017-06-14 20:27:09

帮助告诉我们:

代码语言:javascript
复制
(xx <- c(0:4)) 
is.na(xx) <- c(2, 4)
xx                     #> 0 NA  2 NA  4

所以,

代码语言:javascript
复制
is.na(xx) <- 1

其行为更像是

代码语言:javascript
复制
set NA at position 1 on variable xx
票数 0
EN

Stack Overflow用户

发布于 2017-10-29 05:36:01

@matt,为了回应你上面在评论中提出的问题,这里有一种替代方法来完成同样的任务,我认为更容易遵循:-)

clinical.trial$age[sample(1:100, 20)] <- NA

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44544501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档