在R语言定义中,NA简要描述了值,其中一部分表示
......尤其
FALSE & NA是FALSE,TRUE | NA是TRUE.NA不等于任何其他价值或自身; 测试NA是使用is.na.但是,NA值将与另一个NA值匹配match.
关于声明" NA 不等于任何其他价值或自身 ",
更新:再次修订的问题是
什么是推理,如果有的话,后面 NA 的匹配 NA 中 match,并在语言无处?
对我来说没有意义的是,任何人都不知道(或者不会丢失)的缺失值会匹配同一类型的另一个缺失值.自从我发布这个,我发现了一些example(match)提供一些推理的东西.字符强制改变了它的类型.如果我喜欢的话,我可以把它彻底抹掉.
match(NA, NA)
# [1] 1
match(NA, NA_real_)
# [1] 1
match(NA_character_, NA_real_)
# [1] 1
match(paste(NA), NA)
# [1] NA
gsub("NA", "", NA)
# [1] NA
gsub("NA", "", paste(NA))
# [1] ""
is.na(NA) …Run Code Online (Sandbox Code Playgroud) 我有一个示例数据框:
df <- data.frame(x = 1:112, y = runif(112))
Run Code Online (Sandbox Code Playgroud)
有没有办法打印数据框列表,列表的第一部分包含行1:10,第二部分11:20等,直到结束(111:112)?
我有一个CSV数据文件,我可以使用R加载 read.csv()
有些数据丢失了,所以我想将数据帧缩小到完全由非缺失数据组成的设置,即如果NULL出现在任何地方,我想从过滤后的数据集中排除该列和行.
我知道我可以通过内置的R向量操作相当简单地做到这一点,但我不太确定如何做到这一点?
为了使我的问题更具体一点,这里有一个快速的数据样本,以便您可以看到我想要做的事情.
DocID Anno1 Anno7 Anno8
1 7 NULL 8
2 8 NULL 3
44 10 2 3
45 6 6 6
46 1 3 4
49 3 8 5
62 4 NULL 9
63 2 NULL 4
67 11 NULL 3
91 NULL 9 7
92 NULL 7 5
93 NULL 8 8
Run Code Online (Sandbox Code Playgroud)
所以考虑到这个输入,我需要一些代码来减少输出.
DocID Anno8
44 3
45 6
46 4
49 5
Run Code Online (Sandbox Code Playgroud)
作为Anno8唯一具有非NULL数据的列,并且只有四行具有非NULL数据.
我注意到,当我叫args上一些的基本功能,字节码显示为好.但在其他原语上,不会出现字节码.例如
args(length)
# function (x)
# NULL
args(list)
# function (...)
# NULL
# <bytecode: 0x44a0f38>
Run Code Online (Sandbox Code Playgroud)
这是为什么?
起初我认为这可能与...争论有关,但以下反驳了这一理论.
args(dim)
# function (x)
# NULL
args(unclass)
# function (x)
# NULL
# <bytecode: 0x44a0450>
Run Code Online (Sandbox Code Playgroud)
令我困惑的是,字节码只出现在其中一些中,而不出现在其他中.我一直认为所有原语都是特殊的,并且它们都共享相同的"属性"(缺少更好的单词,而不是实际的R属性).
如果我们查看...在其参数列表中有点的函数体,我们通常可以找到接收这些点参数的函数.
例如,我们可以在主体中sapply()看到点参数传递给lapply().
sapply
# function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
# {
# FUN <- match.fun(FUN)
# answer <- lapply(X = X, FUN = FUN, ...)
# ## rest of function body
# }
# <bytecode: 0x000000000e05f0b0>
# environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)
然而,lapply()也有圆点...在参数列表中,但没有函数体.
lapply
# function (X, FUN, ...)
# {
# FUN <- match.fun(FUN)
# if (!is.vector(X) || is.object(X))
# X <- as.list(X)
# .Internal(lapply(X, …Run Code Online (Sandbox Code Playgroud) 当试图从RStudio推送到GitHub时,我收到以下错误.
error: unable to read askpass response from 'rpostback-askpass'
fatal: could not read Username for 'https://github.com':
No such device or address
Run Code Online (Sandbox Code Playgroud)
RStudio的起源是
https://github.com/rmscriven/other.git
Run Code Online (Sandbox Code Playgroud)
什么时候它应该是
https://github.com/rmscriven/saber.git
Run Code Online (Sandbox Code Playgroud)
RStudio不允许我更改版本控制系统的来源.这是它显示的内容:
是否可以从RStudio更改我的GitHub原始URL?
我正在尝试使用rbind它们.但我需要一份dataframes已列入全球环境的所有内容列表.我该怎么做?
代码我用来导入目录中的20个csv文件.基本上,必须组合成单个数据帧.
temp = list.files(pattern = "*.csv")
for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i]))
Run Code Online (Sandbox Code Playgroud) 以下向量x包含两个序列1:4和6:7,其他非连续数字之间.
x <- c(7, 1:4, 6:7, 9)
Run Code Online (Sandbox Code Playgroud)
我想x按顺序拆分,以便结果如下所示.
# [[1]]
# [1] 7
#
# [[2]]
# [1] 1 2 3 4
#
# [[3]]
# [1] 6 7
#
# [[4]]
# [1] 9
Run Code Online (Sandbox Code Playgroud)
有一种快速简单的方法吗?
我试过了
split(x, c(0, diff(x)))
Run Code Online (Sandbox Code Playgroud)
接近,但我不想附加0差异向量是正确的方法.使用findInterval也没有用.
我readr用来读取包含时间格式的日期列的数据.我可以使用col_types选项正确读取它readr.
library(dplyr)
library(readr)
sample <- "time,id
2015-03-05 02:28:11,1674
2015-03-03 13:10:59,36749
2015-03-05 07:55:48,NA
2015-03-05 06:13:19,NA
"
mydf <- read_csv(sample, col_types="Ti")
mydf
time id
1 2015-03-05 02:28:11 1674
2 2015-03-03 13:10:59 36749
3 2015-03-05 07:55:48 NA
4 2015-03-05 06:13:19 NA
Run Code Online (Sandbox Code Playgroud)
这很好.但是,如果我想操作此列dplyr,则时间列将丢失其格式.
mydf %>% mutate(time = ifelse(is.na(id), NA, time))
time id
1 1425522491 1674
2 1425388259 36749
3 NA NA
4 NA NA
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我知道我可以通过将它转换为字符来解决这个问题,但是如果不来回转换它会更方便.
mydf %>% mutate(time = as.character(time)) %>%
mutate(time = ifelse(is.na(id), NA, …Run Code Online (Sandbox Code Playgroud)