R 删除元素包含字符串的列表行
我有一个列表,其中所有列的长度都相同R 删除元素包含字符串的列表行,r,R,我有一个列表,其中所有列的长度都相同 ll<-list("a"=c(1:5), "b"=c(1:5)*10, "c"="one","two","three","four","five") ll如果列表中的所有元素长度相同,那么可能应该使用data.frame。但是,假设要删除每个列表元素中与ll$c==“one”位置相对应的元素,可以使用以下lappy lapply(ll, "[", ll$c != "one") $a [1] 2 3 4 5 $b
ll<-list("a"=c(1:5),
"b"=c(1:5)*10,
"c"="one","two","three","four","five")
ll如果列表中的所有元素长度相同,那么可能应该使用data.frame。但是,假设要删除每个列表元素中与ll$c==“one”
位置相对应的元素,可以使用以下lappy
lapply(ll, "[", ll$c != "one")
$a
[1] 2 3 4 5
$b
[1] 20 30 40 50
$c
[1] "two" "three" "four" "five"
第二个参数表示子集或提取函数,请参见?[”,第三个参数用于向子集函数提供与ll$c
长度相同的逻辑向量(以及其他列表元素)
如果有许多列表元素,则首先计算一次逻辑向量,然后重复引用它会更有效
keepers <- ll$c != "one"
lapply(ll, "[", keepers)
keepers在一个列表中,引用“行”是不明确的;您可能意味着去掉c
的第一个元素,或者完全去掉c
。您应该真正提供您想要的结果。您的c
格式不正确,您需要c=c(“一”、“二”…))
。更正了输入错误,并将其包装在as.data.frame中,我想您的代码可以正常工作,grep
是危险的,因为-c()
,一个空的grep,将为您提供错误的子集。
ll <-
structure(list(a = 1:5, b = c(10, 20, 30, 40, 50), c = c("one",
"two", "three", "four", "five")), .Names = c("a", "b", "c"))