我想对R中的字符列表执行操作,如下所述:


仅保留'-'之后的内容
然后仅保留其余四个字符的前四个字符(如果长度小于四个,则以“ J”结尾)
将所有内容都大写


Python范例

lt = ['LTA-Yokudo', 'LTA-Luo', 'LTA-Kawasaki']
[str(x).split('-')[1][:4].upper().ljust(4, 'J') for x in lt]


预期结果

['YOKU', 'LUOJ', 'KAWA'] # in Python
c('YOKU', 'LUOJ', 'KAWA') # in R


请注意,列表中的字符串将始终包含字符“-”。

在R中这样做的最佳解决方案是什么?
谢谢

最佳答案

使用stringr的解决方案(以及magrittr中的管道操作)。

library(magrittr)
library(stringr)

lt <- c('LTA-Yokudo', 'LTA-Luo', 'LTA-Kawasaki')

lt2 <- lt %>%
  str_extract(pattern = "(?<=-)[A-Za-z]*") %>% # Extract letters after -
  str_sub(start = 1, end = 4) %>% # Get four letters
  str_pad(width = 4, pad = "J", side = "right") %>% # Add J at the end
  str_to_upper() # To lower case
lt2
# [1] "YOKU" "LUOJ" "KAWA"

09-26 16:53