我正在查看代码from here,它的开头是这样的:
## 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上的布尔向量通过循环获得分配给它的数字。
发布于 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)。
关于其他类似的函数,我们可以在基础包中找到:
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的意义上,所有操作都是相同的。但在那之后,它们的行为都像任何普通函数一样。
发布于 2017-06-14 20:27:09
帮助告诉我们:
(xx <- c(0:4))
is.na(xx) <- c(2, 4)
xx #> 0 NA 2 NA 4所以,
is.na(xx) <- 1其行为更像是
set NA at position 1 on variable xx发布于 2017-10-29 05:36:01
@matt,为了回应你上面在评论中提出的问题,这里有一种替代方法来完成同样的任务,我认为更容易遵循:-)
clinical.trial$age[sample(1:100, 20)] <- NA
https://stackoverflow.com/questions/44544501
复制相似问题