我有以下data.frame,ccodealp_year是class" list"
value.change ccodealp_year
-2.0 COD08
5.5 LBR08
-3.0 NER99
-2.0 c("AGO99", "COL96")
-1.0 c("GNB03", "SEN09")
我想转换' ccodealp_year的内容为一个字符串(每行)。 我遇到的问题涉及多个列表条目的这些值:c(" AGO99"," COL96") 和c(" GNB03"," SEN09");我的目标是获取类字符的条目,读作
ccodealp_year
COD08
LBR08
NER99
AGO99, COL96
GNB03, SEN09
到目前为止,我想出了
e$ccodealp_year.x <- paste0(" ",unlist(e$ccodealp_year), collapse="")
然而,将ccodealp_year的所有条目放入每一行。
[1] " COD08 LBR08 NER99 AGO99 COL96 GNB03 SEN09"
[2] " COD08 LBR08 NER99 AGO99 COL96 GNB03 SEN09"
[3] " COD08 LBR08 NER99 AGO99 COL96 GNB03 SEN09"
[4] " COD08 LBR08 NER99 AGO99 COL96 GNB03 SEN09"
[5] " COD08 LBR08 NER99 AGO99 COL96 GNB03 SEN09"
我是否必须将它们转换为字符串,然后删除&#34; c&#34;,括号和连字符与gsub之类的东西?还是有更直接的方式?我本以为这是相当简单但不幸的是我还没有能够让它发挥作用。非常感谢。
答案 0 :(得分:1)
我似乎无法生成与您相同的打印输出,但根据您的描述,听起来您的数据采用以下格式
dd<-data.frame(value.change=c(-2,5.5,-3,-2,-1))
dd$ccodealp_year <- list("COD08","LBR08", "NER99", c("AGO99", "COL96"), c("GNB03", "SEN09") )
dd
# value.change ccodealp_year
# 1 -2.0 COD08
# 2 5.5 LBR08
# 3 -3.0 NER99
# 4 -2.0 AGO99, COL96
# 5 -1.0 GNB03, SEN09
str(dd)
# 'data.frame': 5 obs. of 2 variables:
# $ value.change : num -2 5.5 -3 -2 -1
# $ ccodealp_year:List of 5
# ..$ : chr "COD08"
# ..$ : chr "LBR08"
# ..$ : chr "NER99"
# ..$ : chr "AGO99" "COL96"
# ..$ : chr "GNB03" "SEN09"
所以即使他们打印时看起来像sigle值,它们实际上也是矢量。要转换为连续字符串,您可以执行
dd$ccodealp_year <- sapply(dd$ccodealp_year, paste, collapse=",")
dd
# value.change ccodealp_year
# 1 -2.0 COD08
# 2 5.5 LBR08
# 3 -3.0 NER99
# 4 -2.0 AGO99,COL96
# 5 -1.0 GNB03,SEN09
str(dd)
# 'data.frame': 5 obs. of 2 variables:
# $ value.change : num -2 5.5 -3 -2 -1
# $ ccodealp_year: chr "COD08" "LBR08" "NER99" "AGO99,COL96" ..
答案 1 :(得分:1)
我假设这可能是list of lists
ccodealp_year=list( "COD08", "LBR08", "NER99", list(c("AGO99", "COL96")),list(c("GNB03", "SEN09")))
dat <- data.frame(value.change=c(-2.0, 5.5, -3, -2, -1), I(ccodealp_year))
dat
# value.change ccodealp_year
#1 -2.0 COD08
#2 5.5 LBR08
#3 -3.0 NER99
#4 -2.0 c("AGO99....
#5 -1.0 c("GNB03....
dat[,2] <- sapply(do.call(`c`,dat[,2]), paste, collapse=", ")
dat