如何在R的数据帧中缩写长名称?

如何在R的数据帧中缩写长名称?,r,dataframe,abbreviation,R,Dataframe,Abbreviation,我正在使用一个数据帧,它的名称非常长,超过25个字符。我正试图用plotly制作一个包含所有这些组织名称的条形图,但是名称被截断了,因为它们太长了。我已经尝试过像下面这样调整边距: plot_ly(x = number, y = org_name, type = 'bar') %>% layout(margin = list(l = 150)) for(i in dataframe.name$org_name){ if(nchar(i) > 25){ dataframe.na

我正在使用一个数据帧,它的名称非常长,超过25个字符。我正试图用plotly制作一个包含所有这些组织名称的条形图,但是名称被截断了,因为它们太长了。我已经尝试过像下面这样调整边距:

plot_ly(x = number, y = org_name, type = 'bar') %>% 
layout(margin = list(l = 150))
for(i in dataframe.name$org_name){
 if(nchar(i) > 25){
 dataframe.name$abbrv <- paste0(substring(i, 0, 25), "...")
 }
 else{
  dataframe.name$abbrv <- "NA"
}
它可以工作,但条形图看起来并不好看,所以我尝试做的另一个选择是缩写任何超过25个字符的组织名称。然而,我很难做到这一点。我尝试缩写它的一种方法是创建一个名为abbrv的新列,使用substring获取组织名称的前25个字符,然后执行“…”,然后将其放入该列中。对于不大于25的组织名称,我只需在abbrv列中添加NA,如下所示:

plot_ly(x = number, y = org_name, type = 'bar') %>% 
layout(margin = list(l = 150))
for(i in dataframe.name$org_name){
 if(nchar(i) > 25){
 dataframe.name$abbrv <- paste0(substring(i, 0, 25), "...")
 }
 else{
  dataframe.name$abbrv <- "NA"
}
但我也有错误。在这一点上,我甚至不知道该做什么以及如何在我的数据帧中缩写长名称?我真的很迷茫,不知道该做什么,如何准确地缩写这些长名字。如果有人能帮我,那就太好了!谢谢

*******编辑*******

所以我现在使用的代码是:

for(i in 1:nrow(dfname)){
 if(nchar(dfname$orgname[i]) > 25){
   dfname$abbrv.column <- substring(dfname$orgname[i], 0, 25)
 }  
 else{
   dfname$abbrv.column <- dfname$orgname
 }
}
for(i in 1:nrow(dfname)){
如果(nchar(dfname$orgname[i])>25){
dfname$abbrv.column
数据帧。name$abbr
是数据帧中所有缩写的向量,而不仅仅是一个名称

这就是为什么
数据框中的所有条目。name$abbr
被设置为
NA
;数据框中的姓氏不超过25个字符,因此
dataframe.name$abbr
中的所有条目都被指定为
NA

:只需完全删除
NA
s,仅在字符数超过25时截断

像这样的东西应该很管用:

dataframe.name$abbrv <- substring( dataframe.name$org_name, 0, 25 )

基本R缩写。最多8个字符,包括“.”


如果您将小于25个字符的全名放在abbrv列中会怎么样?然后您只需使用abbrv列进行绘图。只需更改此
dataframe.name$abbrv Hmmm,这也不是一个坏主意,但不幸的是,现在abbrv列只填充了一个组织名称,在本例中,它是的组织名称数据帧中的最后一行。我不知道它为什么这样做,它之前也在做同样的事情,只是列中填充了“NA”。您是否建议保持for循环,以便遍历数据帧中的每个条目?现在我得到错误:警告消息:缩写(I):缩写与非ASCII字符一起使用有关系吗?您根本不需要for循环,我也不需要for循环?我正在尝试检查每个组织名称是否超过25个字符,如果超过25个字符,我将其缩写。根据编辑中的代码,我将其重写为:
dfname$abbrv.column 25,substring(dfname$orgname,0,25),“NA”)
。但是为什么您坚持保留
NA
s?
> abbreviate(names(iris), minlength = 8)
Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
  "Spl.Lngt"   "Spl.Wdth"   "Ptl.Lngt"   "Ptl.Wdth"    "Species"