我试图以产生以下输出的方式来连接两个字符向量
aggmodes<-c("17x8","17x7x8","17x28x8")
listdata<-c("Motion.Age","res.Context.Only")
输出应该是这样
"Motion.Age,17x8"
"Motion.Age,17x7x8"
"Motion.Age,17x28x8"
"res.Context.Only,17x8"
"res.Context.Only,17x7x8"
"res.Context.Only,17x28x8"
我写了以下代码:
c<-as.vector(sapply(1:length(listdata), function(i){
sapply(1:length(aggmodes),function(j){paste(aggmodes,listdata)})
}))
但是它给了我一个10维向量。很抱歉,如果重复的话,但是我找不到解决问题的正确答案
答案 0 :(得分:1)
c(sapply(listdata,paste,aggmodes,sep=","))
# [1] "Motion.Age,17x8" "Motion.Age,17x7x8" "Motion.Age,17x28x8"
# [4] "res.Context.Only,17x8" "res.Context.Only,17x7x8" "res.Context.Only,17x28x
我们将listdata
的每个元素粘贴到所有aggmodes
上,然后将其全部解包。
您的代码不是最优的,因为您没有利用paste
是矢量化的事实,但是可以稍作修改即可工作:
as.vector(sapply(1:length(listdata), function(i){
sapply(1:length(aggmodes),function(j){paste(aggmodes[j],listdata[i])})
}))
答案 1 :(得分:0)
as.character(outer(listdata, aggmodes, paste, sep = ","))
outer
接受三个参数:x
,y
和FUN
。它将FUN
应用于x
和y
的所有元素-在这种情况下,将它们粘贴在一起。由于outer
返回矩阵,因此将其包装在as.character
中以返回向量!