【问题标题】:R colnames() assigning every element in list to first columnR colnames() 将列表中的每个元素分配给第一列
【发布时间】:2013-10-18 16:46:25
【问题描述】:

我正在尝试使用列表或字符向量重命名数据帧 (df) 中的 104 列(我已经尝试过两种方式)。

不是将向量或列表中的 104 个元素分别分配给 104 列,而是将所有 104 个元素分配给第一列,所有其他元素都得到 NA。

关于为什么会出现这种行为以及如何正确执行的任何建议?

> names(df)


 [1] "V1"   "V2"   "V3"   "V4"   "V5"   "V6"   "V7"   "V8"   "V9"   "V10"  "V11"  "V12"  "V13"  "V14"  "V15"  "V16"  "V17"  "V18"  "V19"  "V20"  "V21"  "V22"  "V23"  "V24"  "V25"  "V26"  "V27" 
 [28] "V28"  "V29"  "V30"  "V31"  "V32"  "V33"  "V34"  "V35"  "V36"  "V37"  "V38"  "V39"  "V40"  "V41"  "V42"  "V43"  "V44"  "V45"  "V46"  "V47"  "V48"  "V49"  "V50"  "V51"  "V52"  "V53"  "V54" 
 [55] "V55"  "V56"  "V57"  "V58"  "V59"  "V60"  "V61"  "V62"  "V63"  "V64"  "V65"  "V66"  "V67"  "V68"  "V69"  "V70"  "V71"  "V72"  "V73"  "V74"  "V75"  "V76"  "V77"  "V78"  "V79"  "V80"  "V81" 
 [82] "V82"  "V83"  "V84"  "V85"  "V86"  "V87"  "V88"  "V89"  "V90"  "V91"  "V92"  "V93"  "V94"  "V95"  "V96"  "V97"  "V98"  "V99"  "V100" "V101" "V102" "V103" "V104"

> d2 = as.character(strapply(name,"(?<=[0-9]{1}=)(.{2,}?)((?= V[0-9])|(?=   $))",perl=TRUE))
> d2
[1] "c(\"ICPSR MEMBER ID NUMBER\", \"CONGRESS\", \"CHAMBER/CLASS\", \"STATE\", \"DISTRICT\", \"PARTY\", \"POL PARTY\", \"FULL NAME\", \"SEX\", \"REGION\", \"STATE BORN ..... \"ICPSR STUDY NUMBER\", \"ICPSR VERSION NUMBER\", \"ICPSR PART NUMBER\")"

 > class(d2)
 [1] "character"
 > colnames(df2) = d2
 > head(df2,1)


 c("ICPSR MEMBER ID NUMBER", "CONGRESS", "CHAMBER/CLASS", "STATE", "DISTRICT", "PARTY", "POL PARTY", "FULL NAME", "SEX", "REGION", "STATE BORN (ICPSR CODE)", "BORN/REP SAME STATE", "BORN/REP SAME REGION", "ICPSR RELATIVES CODE", "RELATIVES CLLPS", "SE ...
    1 

                                                                                                                                                                                                                                                             1
  NA NA NA NA  NA NA                        NA NA NA NA NA NA NA NA NA  NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA  NA  NA NA NA NA NA  NA  NA NA NA

【问题讨论】:

  • 不要将 d2 包裹在 as.character... 您正在从新名称的向量中创建一个字符串...
  • 所以如果我不这样做,它会生成一个列表。如果我应用该列表,它具有相同的行为。
  • 把列表变成向量然后赋值。 ?unlist
  • ?unlist 成功了。感谢迈克尔和贾斯汀的帮助。

标签: r columnname


【解决方案1】:

创建一个标签向量,然后将其分配给数据框,不需要as.character

labels <- c("ICPSR MEMBER ID NUMBER", "CONGRESS")
colnames(df) <- labels

【讨论】:

  • 我不理解您的回复 - d2 是一个字符向量。当我使用 colnames(df)
  • 确保 d2 实际上是一个向量,看起来它只是一个字符串(尝试消除as.character)。它应该采用上面我的标签变量的格式。
  • c("ICPSR 会员 ID 号", "CONGRESS", "CHAMBER/CLASS", "STATE", "DISTRICT", "PARTY", "POL PARTY", "FULL NAME", " SEX", "REGION", "STATE BORN (I... Michael - 当它将名称放入第一列名称时,这就是它的显示方式。这似乎与您的格式匹配。
  • 不,您的代码"c(\"ICPSR MEMBER ID ...\")" 表示曾经是字符串向量现在是单个字符串。 (因为你用as.character 包裹了strapplyas.character(c('a', 'b'))。而是使用unlist(strapply(...))
猜你喜欢
  • 2020-06-09
  • 2012-11-06
  • 2019-08-31
  • 2023-03-16
  • 2020-06-22
  • 2013-02-08
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多