我对有的名字感到有点困惑unlist().请考虑以下MWE
vector1 <- c(1,2,3,4,5,6,7,8,9,10)
names(vector1) <- c(1,2,2,3,4,4,5,6,6,6)
names(vector1)
# [1] "1" "2" "2" "3" "4" "4" "5" "6" "6" "6"
list1 <- split(vector1,names(vector1))
names(list1)
# [1] "1" "2" "3" "4" "5" "6"
Run Code Online (Sandbox Code Playgroud)
但是之后
names(unlist(list1))
# [1] "1.1" "2.2" "2.2" "3.3" "4.4" "4.4" "5.5" "6.6" "6.6" "6.6"
Run Code Online (Sandbox Code Playgroud)
根据文件 unlist()
默认情况下,unlist尝试保留x中存在的命名信息.
所以我无法理解这种特殊的行为.
我的问题是由创建的名称unlist()无法与原始名称匹配vector1.
unlist(unname(list1))
# 1 2 2 3 4 4 5 6 6 6
# 1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
我同情你的沮丧.R(我认为)试图保留names(x)原始组件名称中的信息和信息(考虑结果unlist(setNames(list1,letters[1:6])),这使得行为更有意义).
你可以得到你想要的东西
setNames(unlist(list1),unlist(lapply(list1,names)))
Run Code Online (Sandbox Code Playgroud)
虽然它确实很尴尬 - unlistWithNames如果我想经常这样做,我会把它变成一个函数(或者一些明智的名字). PS @ JoshOBrien的回答比较简单,但我会把它留在这里,因为它解释了一些事情.