R编程 - 从一个文件中读取行值,并用作另一个文件的列名

时间:2014-04-27 19:02:52

标签: r

我有两个文本文件。第一个文件具有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])

}

非常感谢社区提供可能的解决方案。

4 个答案:

答案 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())