如何解决是否可以使用R根据矢量元素的nchar长度和当前值来重命名矢量元素?
我有6个向量值
vec<-c("Col1","Col2islonger","Col3isabitlonger","Col4isless","Col5willbelongest")
我跑步
nchar(vec)
我的结果是
4,12,16,10,17
基于这些值,我想运行条件语句或for循环,以其长度和当前值为基础对列进行重命名为佳。例如
如果nchar(vec)小于或等于10,则保持名称不变。如果大于10,请确保重命名的元素采用前9个值,然后跳到最后一个。
newvec<- c("Col1","Col2islonr","Col3isabir","Col5willbt")
解决方法
我们可以使用class Simple:
simpleDic = {
'name': {""},'age': {1}}
def __init__(self,name,age):
self.simpleDic['name'] = name
self.simpleDic['age'] = age
def __str__(self):
return "{} {}\n".format(self.simpleDic['name'],self.simpleDic['age'])
def foo():
myDict = {}
for x in range(3):
myDict[x] = Simple('Name' + str(x),x)
print(('{}: {}\n'.format("Creating",myDict[x])))
for key in myDict:
print(('{}: {}\n'.format("Printing" + str(key),myDict[key])))
#### Main program here ####
foo()
修剪sub
。我们创建一个逻辑矢量,其字符数为“ vec”(i1)。使用该代码,我们更新大于10个字符的元素,以使用vec
删除第10个字符与最后一个字符之间的字符,并对其进行更新
sub
-输出
i1 <- nchar(vec) > 10
vec[i1] <- sub("^(.{1,9}).*(.)","\\1\\2",vec[i1])
,
尝试一下:
#Data
vec<-c("Col1","Col2islonger","Col3isabitlonger","Col4isless","Col5willbelongest")
#Rename
vec2 <- ifelse(nchar(vec)<=10,vec,paste0(substr(vec,1,9),substr(vec,nchar(vec),nchar(vec))))
输出:
[1] "Col1" "Col2islonr" "Col3isabir" "Col4isless" "Col5willbt"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。