我有一个这种形式的列表:
s = c(“aa”,“bb”,“cc”,“dd”,“ee”,“xx”)
我想循环遍历此列表,直到考虑所有元素。然后我想检查每个元素是否不等于“空白”。如果不是我想要创建一个变量,它是“s”的每个元素和常量字符串的连接,请说“_file”。最后堆叠这些元素。
我创建的代码如下。但它给了我空白。
s = c("aa", "bb", "cc", "dd", "ee","xx")
t<-if(length(s)>0){
for(i in s){
if(length(s)>0){
i2=i*"_file"
}
else{
i2=''
}
i2<-c()
}
}
我也试过这个。但它已经运行了很长时间。
s = c("aa", "bb", "cc", "dd", "ee","xx")
t<-while(s!=''){
for(i in s){
if(length(s)>0){
i2=i*"_file"
}
else{
i2=''
}
i2<-c()
}
}
有人可以帮助我吗?
谢谢!
答案 0 :(得分:3)
可以使用nzchar
:
s <- c("aa", "bb", "cc", "dd", "ee", "", "xx")
paste(s[nzchar(s)], "file", sep="_")
# [1] "aa_file" "bb_file" "cc_file" "dd_file" "ee_file" "xx_file"
答案 1 :(得分:2)
以下是sub
sub("^([a-z]+)$", "\\1_file", s)
#[1] "aa_file" "bb_file" "cc_file" "dd_file" "ee_file" "" "xx_file"
s <- c("aa", "bb", "cc", "dd", "ee", "", "xx")
答案 2 :(得分:2)
只是'非常简洁的一个班轮'
paste0(Filter(nchar, s), '_file')
答案 3 :(得分:1)
这是我要做的。我相信有更快的解决方案......
s <- c("aa", "bb", "cc", "dd", "ee","xx")
s[nchar(s)>0]<-paste0(s,"_file")
应该做的伎俩