例如
scala> val test = ("TEST" * 3).mkString(",")
test: String = T,E,S,T,T,E,S,T,T,E,S,T
但我想做“TEST,TEST,TEST”
所以我试过这样的。但是我得到了一个令人失望的结果
ms <- strsplit(as.character(df$member),',');
df2 <- df[rep(seq_len(nrow(df)),sapply(ms,length)),];
df2$member <- unlist(ms);
df2;
## team_id member
## 1 1 15
## 1.1 1 25
## 1.2 1 35
## 2 2 12
## 2.1 2 22
## 2.2 2 32
答案 0 :(得分:4)
这是因为你的字符串被视为chars的集合,它们被连接在一起。尝试
Array.fill(3)("TEST").mkString(",")
答案 1 :(得分:3)
mkString
是Iterable
特征的方法。如果您将其应用于String
,则会将其隐式转换为Seq[Char]
。
怎么样
scala> List.fill(3)("TEST").mkString(",")
res0: String = TEST,TEST,TEST
代替?
答案 2 :(得分:1)
你很亲密。如果没有init
,则会有一个额外的逗号,因此init
用于获取除最后一个元素之外的所有元素。
scala> (("TEST" + ",") * 3).init
res7: String = TEST,TEST,TEST