我正在尝试使用循环在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
我想要实现的是一个字符向量,其中每个字符被分成两行,这样thing[1]
就是
1
1
和thing[2]
是
2
2
等等。有谁知道我怎么做到这一点?
答案 0 :(得分: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"