R程序设计中矢量元素的存取

798qvoo8  于 2023-03-20  发布在  其他
关注(0)|答案(2)|浏览(109)

使用0/1索引访问向量元素。

t <- c("Sun","Mon","Tue","Wed","Thurs","Fri","Sat")
y <- t[c(0,0,0,0,0,0,1)]
print(y)

[1] "Sun"

不明白为什么答案是星期日而不是星期六。所有元素都被编码为0,而第7天被编码为1,因此我希望星期六是答案
类似地,按以下步骤调整分度

y <- t[c(1,1,1,1,1,1,1)]
print(y)

[1] "Sun" "Sun" "Sun" "Sun" "Sun" "Sun" "Sun"

答案仍然是Sun。
有人能给我解释一下这个逻辑吗?

o7jaxewo

o7jaxewo1#

因为它是一个数字索引,即二进制。在R中,索引从1开始,因此,0值被丢弃,但末尾的值,即1提取第一个位置的't'元素。如果我们转换为逻辑索引,它将工作,它将提取对应于TRUE值的元素

t[as.logical(c(0,0,0,0,0,0,1))]
#[1] "Sat"
yzckvree

yzckvree2#

使用数字索引时,索引对应于向量中元素的位置。
你会看到的

> t[0]
character(0)

> t[1]
[1] "Sun"

> t[c(0, 1)]
[1] "Sun"

从你的帖子来看,你似乎想使用索引作为掩码。在这种情况下,你可能需要使用布尔值进行索引,它的作用就像一个开关,例如,“开”和“关”,以决定是否应该选择适当的元素,例如,

> t[c(0, 0, 1, 0, 0, 0, 1) > 0]
[1] "Tue" "Sat"

因为

> c(0, 0, 1, 0, 0, 0, 1) > 0
[1] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE

相关问题