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
对赋值有效?它不也应该失败吗?
1条答案
按热度按时间goqiplq21#
警告消息告诉您“无法完成赋值,因为值的长度与元素长度不匹配”。如果使用单个方括号[],则只能赋值单个值。但是,当您尝试将序列[20:25]赋值给my_list[1]时,您将替换长度为1的元素中长度为6的值,这是不成功的。如果要使用单个方括号赋值序列,则可以将值放入list()中:
希望能有所帮助。