Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 为什么`x[0]`返回零长度向量?_Arrays_R - Fatal编程技术网

Arrays 为什么`x[0]`返回零长度向量?

Arrays 为什么`x[0]`返回零长度向量?,arrays,r,Arrays,R,假设我有一个向量,例如,x我的破解,因为我不是程序员,当然也不会对R源代码做出贡献。我想这可能是因为你需要某种占位符来说明这里发生了什么事情,但什么也没有返回。这在表和拆分等情况下变得更加明显。例如,当您创建一个值表并说该单元格为零时,您需要保持由向量中的字符串生成的单元格没有值。使用x[0]==0是不合适的,因为它不是零的数值,而是没有任何值 因此,在下面的拆分中,我们需要一个占位符,integer(0)保留未返回值的位置,该位置与0不同。注意,对于第二个,它返回numeric(0),它仍然是

假设我有一个向量,例如,
x我的破解,因为我不是程序员,当然也不会对R源代码做出贡献。我想这可能是因为你需要某种占位符来说明这里发生了什么事情,但什么也没有返回。这在
拆分
等情况下变得更加明显。例如,当您创建一个值表并说该单元格为零时,您需要保持由向量中的字符串生成的单元格没有值。使用
x[0]==0
是不合适的,因为它不是零的数值,而是没有任何值

因此,在下面的拆分中,我们需要一个占位符,
integer(0)
保留未返回值的位置,该位置与0不同。注意,对于第二个,它返回
numeric(0)
,它仍然是一个占位符,表示它是数字占位符

with(mtcars, split(as.integer(gear), list(cyl, am, carb)))
with(mtcars, split(gear, list(cyl, am, carb)))
因此,在某种程度上,我的
x[FALSE]
反驳是正确的,因为它保留了向量中不存在的零点的位置

好吧,我刚才吐出来的巴隆加酒是真的,直到有人提出异议并把它撕下来

本指南第19页()说明
integer()和integer(0)是空整数。


相关SO post:

由于数组索引是基于1的,因此索引0没有意义。该值作为向量索引被忽略。

中所示?“[”

允许NA和零值:包含 零被忽略,而包含NA的行在 结果

所以索引0被忽略了

x <- 1:10
x[c(1, 3, 0, 5, 0)]
#[1] 1 3 5

x,原因相同x[错误]does@TylerRinker:表面上看,这是一个有趣的问题,因为未明确定义的
x[0]
返回
integer(0)
,而未明确定义的
x[11]
返回
NA
。此外,显式赋值
x[0]@Tylerlinker,我想我理解为什么
x[FALSE]
返回一个零长度向量:当使用logicals(TRUE/FALSE)进行提取时,需要提供一个与
x
长度相同的向量。因此在您的示例中,
FALSE
被循环使用,导致
x[rep(FALSE,length(x))]
我对它返回
整数(0)
并不感到惊讶。同样,
x[TRUE]
将返回
x
。但我看不到您在
x[0]
x[FALSE]之间建立的链接
。你能详细说明一下吗?这是基于一个索引的结果,与基于一个索引的结果相反,但这是可以理解的意外。因为你不能混合使用+ve和-ve索引,忽略0可能是正确的答案:
x[0:11]
返回“[1]12345678910na`和
x[-(0:5)]
返回
[1]6.7.8.9.10
。但我看不出这有多大用处。我仍然觉得这无法回答为什么它不会像x[11]那样返回NA的问题。因为
x[11]
确实存在,它只是缺少了。试试
x[15]@Tylerlinker:我同意你的观点,但只是为了进一步讨论,如果x[0]不存在,为什么
x[0]@jthetzel这不是一个很好的例子,因为
assign(x[1],1)
也给出了无效的第一个参数。但是
assign(“x[1]”,1)
assign(“x[0]”,1)
都成功了。@Dason:谢谢你指出这一点。不过,出于好奇,我想知道为什么
x[0]没有错误谢谢@Dason。我认为值得注意的是,您引用的句子是“矩阵和数组”部分的一部分,而不是“原子向量”,因此它没有明确记录或回答我的问题,但可能可以用于外推。无论哪种方式,尽管它可以帮助讨论,但我对“因为文档中这么说”回答;我更感兴趣的是为什么做出这个选择。其他一些回答和评论提供了一些合理的解释,解释了为什么它不应该返回
NA
x[11]
有。所以我想知道为什么开发人员没有选择抛出错误。错误会很糟糕,因为在像拆分这样的情况下,您希望它返回一些非错误的内容。:)仍然坚持我提出的这个想法,听起来似乎有道理。@Tylerlinker您知道它在拆分中使用了0索引吗?我怀疑这就是“分裂工作的内部因素”。@Dason来吧,你和我都知道我不知道。