在R中创建了嵌套的命名列表

在R中创建了嵌套的命名列表,r,R,假设我有这样一个列表: df = list( Happy = c('Yes','No','Maybe'), Satisfaction = c('Strongly Agree','Agree','Disagree','Strongly Disagree') ) 但我需要什么 df = list( Happy = c('Yes'='Happy-yes','No'='Happy-yes','Maybe'='Happy-maybe'), Satisfaction = c('Strong

假设我有这样一个列表:

df = list(
Happy = c('Yes','No','Maybe'),
Satisfaction = c('Strongly Agree','Agree','Disagree','Strongly Disagree')
)
但我需要什么

df = list(
    Happy = c('Yes'='Happy-yes','No'='Happy-yes','Maybe'='Happy-maybe'),
    Satisfaction = c('Strongly Agree'='Satisfaction-Strongly Agree",'Agree'="Satisfaction-Agree",'Disagree'='Satisfaction-Disagree','Strongly Disagree'='Satisfaction-Strongly Disagree'))

然后,我将把这个列表以文本形式传递到choices()输入中,但通过这种方式,我可以将响应映射回一组命名列表

Map
粘贴
在一起,并
设置名称
以旧值标记新值:

Map(function(nm,x) setNames(paste(nm,x,sep="-"),x), names(df), df)
#$Happy
#          Yes            No         Maybe 
#  "Happy-Yes"    "Happy-No" "Happy-Maybe" 
# 
#$Satisfaction
#                  Strongly Agree                            Agree 
#   "Satisfaction-Strongly Agree"             "Satisfaction-Agree" 
#                        Disagree                Strongly Disagree 
#         "Satisfaction-Disagree" "Satisfaction-Strongly Disagree" 

您可以选择
lappy
来执行此操作:

dfx <- lapply(1:length(df), function(i)paste0(names(df)[i],"-",df[[i]]))
dfxf <- lapply(1:length(dfx), function(i) `names<-`((dfx[[i]]), df[[i]]))
names(dfxf) <- names(df)
请注意这里的,OP desired output似乎没有什么打字错误,因为您可以看到,在第一个列表的第二个元素中,它没有显示“Happy No”,而是显示“Happy Yes”(高兴是),而且外壳也关闭了(假设是这样)

 > dfxf
$Happy
          Yes            No         Maybe 
  "Happy-Yes"    "Happy-No" "Happy-Maybe" 

$Satisfaction
                  Strongly Agree 
   "Satisfaction-Strongly Agree" 
                           Agree 
            "Satisfaction-Agree" 
                        Disagree 
         "Satisfaction-Disagree" 
               Strongly Disagree 
"Satisfaction-Strongly Disagree"