在不在R中工作的列表上执行lappy

在不在R中工作的列表上执行lappy,r,R,我有 当我跑的时候 typeof(A) >"list" typeof(A[1]) >"list" typeof(A[[1]]) >"double" 结果似乎是一样的。但如果我跑 A=lapply(A,unlist) typeof(A[1]) >"list" 请帮助我理解这种行为。为什么两者之间有区别?lapply是否应将该函数应用于列表的每个元素?而A[i]应该像B一样?lappy实际上返回一个列表作为其输出。它将一个函数应用于多个元素,并将每个输出作为列表的一个元素

我有

当我跑的时候

typeof(A)
>"list"
typeof(A[1])
>"list"
typeof(A[[1]])
>"double"
结果似乎是一样的。但如果我跑

A=lapply(A,unlist)
typeof(A[1])
>"list"

请帮助我理解这种行为。为什么两者之间有区别?lapply是否应将该函数应用于列表的每个元素?而A[i]应该像B一样?

lappy
实际上返回一个列表作为其输出。它将一个函数应用于多个元素,并将每个输出作为列表的一个元素返回

值得一提的是,
A[[1]]
是double类型实际上告诉你有一个double列表。
[[]]
引用列表的元素,
[]
引用向量的元素。因此,通过请求
A[1]
您将获得作为列表的第一个元素,通过请求
A[[1]]
您将获得从列表中删除的第一个元素

我怀疑你想要的只是
未列出(A)
。它将返回的每个元素作为单个向量中的元素。在你的例子中,A是双打的列表。希望这就是你想要的

就拿这个例子来说

B=unlist(A[1])
typeof(B)
"double"

我希望这可以清除一些行为:)

如果
A
是一个列表,那么
A[1
]将自动成为一个列表。这并不意味着您正在处理一系列列表。另一方面,如果
typeof(A[[1]])
返回了“list”,那么我们将是。函数
lappy
应被视为
a[[i]]
上的一个循环,其中
i
1:length(a)
的范围。注意:我没有说A[I]@42-我明白了,如果A是一个列表,A[I]总是一个列表。。。我不知道这件事。所以我实际上没有一个列表,而是一个向量列表?你能详细解释一下为什么A[i]总是一个列表吗?如果你愿意,我会接受你的回答。谢谢应用于列表的“[”函数总是返回一个子列表。子列表仍然是一个列表。如果长度a==1,则a[1]==A模化丢失属性的可能性,模化
=
运算符不接受这些作为参数的事实。感谢您的响应。我有一个列表,其中每个元素都是一个包含一个向量的列表。我想得到一个包含向量的列表。因此A仍然是一个列表,但它的元素不是包含向量的列表,但是向量。如果我不列出(A),我只得到一个长向量。那么你想要
不列出(lappy(A,unlist))
?那么你不列出每个元素以获得元素列表,然后不列出元素列表?如果A是
列表(B=1:10,C=10:29)
那么我不认为你对
未列出的
的描述清楚地说明了
未列出的(a)
将返回什么。@42,我同意你的看法。OP说他的列表只包含一个元素,所以我在这一次是特别的。@leastsquareswonder我已经更新了我的解决方案。也许这会让事情更清楚一点?
test = list(list(5), list(3), list(1))
> test #Notice this is a list of lists, each containing one element
[[1]]
[[1]][[1]]
[1] 5


[[2]]
[[2]][[1]]
[1] 3


[[3]]
[[3]][[1]]
[1] 1

> test[2] #Notice this has exported the second element as a new list with one element
[[1]]
[[1]][[1]]
[1] 3

> test[[2]] #Notice this has exported the second element not as a list, so now we have one listed instead of two nested lists.
[[1]]
[1] 3

lapply(test, unlist) #This returns a list of element rather than a list of lists
[[1]]
[1] 5

[[2]]
[1] 3

[[3]]
[1] 1

unlist(lapply(test, unlist)) #This returns a vector of elements by unlisting the list of elements we created in the previous step
[1] 5 3 1