3

Rでループを使って文字列のベクトルを作ろうとしているのですが、困っています。誰でも提供できる助けをいただければ幸いです。

私が取り組んでいるコードはもう少し詳細ですが、すべての重要なビットをキャプチャする再現可能な例をここでコーディングしようとしました:

vector1<-c(1,2,3,4,5,6,7,8,9,10)
vector2<-c(1,2,3,4,5,6,7,8,9,10)
thing<-character(10)


for(i in 1:10) {
  line1<-vector1[i]
  line2<-vector2[i]
  thing[i]<-cat(line1,line2,sep="\n") 
}

R は、次のように出力します。

1
1

Error in thing[i] <- cat(line1, line2, sep = "\n") : 
  replacement has length zero

私が達成しようとしているのは、各文字が 2 行に分割されている文字ベクトルthing[1]です。

1
1

そしてthing[2]_

2
2

等々。どうすればこれができるか知っている人はいますか?

4

1 に答える 1

9

cat画面に出力されますが、返されますNULL-新しい文字ベクトルに連結するには、次を使用する必要がありますpaste:

  thing[i]<-paste(line1,line2,sep="\n") 

たとえば、対話型端末では次のようになります。

> line1 = "hello"
> line2 = "world"
> paste(line1,line2,sep="\n") 
[1] "hello\nworld"
> ret <- cat(line1,line2,sep="\n") 
hello
world
> ret
NULL

あなたの場合、 for ループ全体をより簡潔で効率的な行に置き換えることができることに注意してください。

thing <- paste(vector1, vector2, sep="\n")
#  [1] "1\n1"   "2\n2"   "3\n3"   "4\n4"   "5\n5"   "6\n6"   "7\n7"   "8\n8"  
#  [9] "9\n9"   "10\n10"
于 2013-01-24T15:35:11.900 に答える