我有两个文本文件。第一个文件具有200列的单列,每行具有唯一值。第二个文件有200列,header=FALSE
和3000行。我必须使用第一个文件的行值来给出第二个文件的列名。
第一个文件行如:
[1] a
[2] b
...
...
[200] abc
第二个文件列如下:
v1 v2 v3 ... ... v200
现在我必须将v1
替换为'a'
。我试过多种方法,但无法解决它。寻求帮助。
我解决了这个问题并找到了解决方案。
阅读txt文件。
df1<- read.table("file_1.txt", header=FALSE)
df2<- read.table("file_2.txt", header=FALSE)
计算行数并使用它们来运行for循环,以便可以使用行字符串来命名列名。
count <- nrow(df1)
for (i in 1:count){
names(df2)[i]<- toString(df1[i, 2])
}
非常感谢社区提供可能的解决方案。
答案 0 :(得分:1)
如果我理解正确,你有一个向量A
,其中有200个名称,数据框B
有200列。并且您希望将A
中的200个值用作B
的列名。
好吧,如果A
中的值都是合法的(即语法正确的)列名,那么这很简单:
colnames(B) <- A
答案 1 :(得分:0)
我不确定我完全明白你的意思。但是,假设您有一个字符向量,那么您可以使用colnames函数将此向量中的字符串用作第二个文件的列名。例如:
letters.red<-letters[1:10] # character vector
x<-1:100
dim(x)=c(10,10)
colnames(x)<-letters.red
我希望这会有所帮助。如果没有,也许您可以提供一些数据来准确显示您想要的内容。
答案 2 :(得分:0)
如果您必须另外使用新的列名(从向量A获取)保留数据框B,则这两项任务可以一次完成:
write.table(B, file="a.csv", sep=",", row.names = FALSE, col.names = A)
然而 tophcito 的答案是最好的。
此致
萨扬
答案 3 :(得分:0)
如果名称文件是 file_1.txt 而 file_2.txt 是200列文件:
df2<- read.table("file_2.txt", header=FALSE)
colnames(df2) <- scan("file_1.txt",what=character())