【发布时间】:2013-07-15 01:51:39
【问题描述】:
在一些不太相关的其他人中,我检查了以下两个答案:
Answer 1
Answer 2
但是,那里提出的解决方案没有帮助。
我可能误解了自己的问题并试图以错误的方式做正确的事。感谢您的帮助。
我有以下代码在其中构建字符串列表并尝试删除列表的第二个元素:
> my_strings <- "string1 string2 string3 string4 string5"
> my_list <- strsplit(my_strings,split=" ")
> #Now trying to delete one element from my_list using positive indexing
>
> my_list[[2]] <- NULL #does not work
> my_list[2] <- NULL #nope. Doesn't work either
> my_list[[1]][2] <- NULL #error: replacement has length zero
> my_list[[1]][[2]] <- NULL # error: more elements supplied than there are to replace
所以,我的问题是:如何删除 my_list 的第二个元素(或多个元素,如 1 和 3)? my_list 的元素没有命名,我想通过数字索引来访问它们。
【问题讨论】:
-
mylist[[1]] <- mylist[[1]][-2]。我建议阅读一下 R 中子集和列表的工作方式。 -
带回家的消息:使用子集而不是分配
NULL。 -
非常感谢贾斯汀(和罗兰)。使用您显示的范围而不是负索引的行非常适合我的目的。我试图用“
-
子集确实非常适合处理字符串列表。您可以使用带有正索引(
mylist[[1]][3:7]保留元素 3 到 7)或负索引(mylist[[1]][-3:-7]丢弃元素 3 到 7)的范围。再次感谢您! -
更新:索引范围的变量确实有效,但您必须保证“两个”索引都是负数或正数。例如,
mylist[[1]][var1:var2]仅在两个索引都是正数或负数时才有效。