使用单括号与双括号将R赋值给列表元素

lp0sw83n  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(163)

R有两个索引操作符,[][[]]。当输入单个索引时,单括号将返回列表中的元素,而双括号将返回元素本身,而不是列表中的元素。在列表元素赋值期间,我理解使用双括号是正确的方法(并且两个选项之间的逻辑性越高)。但是,下面的代码块中只有一行不成功。

my_list = vector("list", 1)

my_list[1] = 25
my_list[[1]] = 89
my_list[1] = 20:25
my_list[[1]] = 85:89

my_list[1] = 20:25失败,并给出以下警告:

Warning message:
In my_list[1] = 20:25 :
  number of items to replace is not a multiple of replacement length

虽然我不明白警告在此上下文中的含义,但该行未完成分配是有道理的。我的问题是:为什么my_list[1] = 25对赋值有效?它不也应该失败吗?

goqiplq2

goqiplq21#

警告消息告诉您“无法完成赋值,因为值的长度与元素长度不匹配”。如果使用单个方括号[],则只能赋值单个值。但是,当您尝试将序列[20:25]赋值给my_list[1]时,您将替换长度为1的元素中长度为6的值,这是不成功的。如果要使用单个方括号赋值序列,则可以将值放入list()中:

my_list[1] = list(20:25)

 my_list
[[1]]
[1] 20 21 22 23 24 25

希望能有所帮助。

相关问题