如何从R中的字符串列表中删除一个元素
Posted
技术标签:
【中文标题】如何从R中的字符串列表中删除一个元素【英文标题】:How to delete an element from a list of strings in R 【发布时间】:2013-07-15 01:51:39 【问题描述】:在一些不太相关的其他人中,我检查了以下两个答案:Answer 1Answer 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]
仅在两个索引都是正数或负数时才有效。
【参考方案1】:
我不确定您是否打算使用您的代码创建向量列表;仅使用字符向量可能更容易。尝试先使用 unlist:
my_list <- unlist(strsplit(my_strings,split=" "))
my_list <- my_list[-2]
【讨论】:
啊,好吧。比@Justin 的回答最好。 你的答案很好,但我必须在第二行再次使用 list() ,否则我最终会得到不是列表的东西。然而,贾斯汀和罗兰提出的子集选项更吸引了我的眼球。不过我接受了你的回答,因为他们只添加了 cmets。 是的,我说错了——很抱歉造成混乱!但同样,@Justin 的解决方案听起来满足了您的需求。以上是关于如何从R中的字符串列表中删除一个元素的主要内容,如果未能解决你的问题,请参考以下文章