如何一次访问R中的所有子列表元素?

时间:2019-06-13 10:30:14

标签: r list

我有一个类似矢量的分割字符串

public interface AppleRepository extends CrudRepository<Apple, Long> {
    @Query("SELECT new com.mypackage.Apple(a.field1, a.field2) FROM " +
           "    Apple a ")
    List<Apple> findCustomApples();
}

返回我

df <- c("Test A:No1", "Test B:No2")
l <- str_split(df, ":")
l

现在,我有兴趣独立访问所有第一个元素和所有最后一个元素,或者创建类似的向量

[[1]]
[1] "Test A" "No1" 

[[2]]
[1] "Test B" "No2" 

[1] "Test A" "Test B"

我尝试了几种带或不带逗号的单括号和双括号,但是l [[x]] [1]或l [[x]] [2]只给我列表元素x。

如何一次访问所有元素(例如l [[]] [1])?

2 个答案:

答案 0 :(得分:0)

也许使用unlist和lapply可以完成工作。

df <- c("Test A:No1", "Test B:No2")
l <- str_split(df, ":")

> unlist(lapply(l,function(x) x[1]))
[1] "Test A" "Test B"
> unlist(lapply(l,function(x) x[length(x)]))
[1] "No1" "No2"

答案 1 :(得分:0)

您可以使用sapply

sapply(l, `[`, 1)
# [1] "Test A" "Test B"

sapply(l, `[`, 2)
# [1] "No1" "No2"

说明:在R中,相当多的东西都是函数。括号`[`实际上也是函数。考虑以下示例可以清楚说明上面sapply起作用的原因。

示例

考虑此向量

x <- c("A", "B")

我们在做什么

x[1]
# [1] "A"
x[2]
# [2] "B"

我们实际上正在使用`[`函数的基础前缀形式的特殊形式:

`[`(x, 1)
# [1] "A"
`[`(x, 2)
# [1] "B"