r - 根据R中另一个列表中的数字删除列表中的特定项目

标签 r list elements

我有两个列表,一个包含不同长度的字符值 (dat),另一个在每个元素中包含一个数值 (delete_n)。

dat <- list(c("Apple", "Pear"), c("Red", "Blue", "Green"), c("Toyota", "Mazda"))
delete_n <- list(0, 2, 1)

“delete_n”中的元素与“dat”中的元素配对(delete_n[1] 与 dat[1] 配对,依此类推)。 “delete_n”数字 (0,2,1) 告诉我需要从每一行末尾删除的每个元素中有多少个特定列表项。

根据示例,我正在寻找一种解决方案,它将从 dat[1] 中删除 0 个项目,从 dat[2] 中删除“Blue”和“Green”,从 dat[3] 中删除“Mazda”。

我尝试先匹配元素编号,然后通过以下变体来识别元素列表索引,但没有成功。 mapply 可能更合适,但我还是不清楚如何编写 function() 部分。

lapply(seq_along(dat), function(x) {
    sapply(seq_along(delete_n), function(y) {
        x[y]
    })
})

最佳答案

mapply(function (x, n) {
    # x is an element of dat; n is an element of delete_n
    x[seq_len(length(x)-n)]
}, dat, delete_n)

解释:

mapply 将函数应用到 datdelete_n 的每个元素,放在一起(所以所有第一个元素,所有第二个元素,等等) .

seq_len(i) 使向量 1:i,因此 seq_len(length(x)-n) 选择除最后一个以外的所有向量xn 个元素。

关于r - 根据R中另一个列表中的数字删除列表中的特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31332387/

相关文章:

r - 将相同的列名应用于多个小标题

r - 根据列值 r 更改行中的值

python - 如何从单个词典创建词典列表?

r - 找到所有相邻的组合

Java 逐元素求和 2 个数组

sorting - 按其在haskell中的元素之一对元组进行排序

r - 过滤 R 数据框以获得帕累托最优解

python - Google Foobar 挑战 Power Hungry - 未通过测试。 5 个测试用例中的 3 个 [隐藏]?

java - 如何创建包含 N 个对象的列表?

r - 如何删除列 : the R equivalent of dropna(subset) from python pandas 子集的缺失观测值