gpt4 book ai didi

r - 从 for 循环内的列表列表中删除元素

转载 作者:行者123 更新时间:2023-12-04 11:39:28 24 4
gpt4 key购买 nike

我有一个命名的列表(数据框)列表。

l_of_lists <- list(
fruits = list(
red = data.frame("apple", "cherry", "strawberry"),
yellow = data.frame("banana", "lemon"),
orange = data.frame("orange", "grapefruit", "blood orange")),
colors = list(
green = data.frame("light green", "green", "dark green"),
red = data.frame("red", "dark red"),
blue = data.frame("light blue", "blue", "dark blue")),
places = list(
inside = data.frame("living room", "bathrooom", "kitchen"),
outside = data.frame("garden", "yard"),
neighborhood = data.frame("playground", "shop", "school"))
)

我正在循环 l_of_listssublists 以确定每个数据帧的列数,并且我想删除每个不满足条件的 sublist (在本例中它有三列)。

使用以下代码:
for (ls in l_of_lists){
for (sublist in ls){
if (!ncol(sublist) == 3)
{
print(ncol(sublist))
#sublist <- NULL # this does achieve the desired result
}
}
}

如何删除我用条件标识的子列表?
(我确信有一种更有效的方法来实现这一点,我很高兴收到有关此的提示。)

最佳答案

将没有 3 列的元素称为更容易:

lapply(l_of_lists,function(i)i[sapply(i,length)==3])

使用 sapply,您可以遍历 l_of_list 的每个元素以获取列数向量。您可以使用它对具有 3 列的那些进行子集化。

如果你想删除,试试这个
l_of_lists = lapply(l_of_lists,function(i)i[sapply(i,length)==3])

关于r - 从 for 循环内的列表列表中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58592415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com