是否有一种简单而又简单的方法将data.frame恢复为向量?
请考虑以下示例数据框:
df<-data.frame(
SeqName=c("1", "2", "3", "4", "5", "6"),
Length=c("440", "511", "1087", "686", "867", "632"),
Cys=c("3", "2", "2", "2", "2", "4"),
NT=c("[NA]", "[B]", "[B]", "[B]", "[B]", "[B]"),
NR=c("[NA]", "[B][M]", "[B]", "[B][M]", "[B][M]", "[NA]"),
RefSeq=c("[NA]", "[B][M]", "[B]", "[B][M]", "[B][M]", "[NA]")
)
是否有一些神奇的功能可以将其还原为矢量形式?。
magical.function(df)
[1]c("1", "2", "3", "4", "5", "6")
[2]c("440", "511", "1087", "686", "867", "632")
[3]c("3", "2", "2", "2", "2", "4")
[4]c("[NA]", "[B]", "[B]", "[B]", "[B]", "[B]")
[5]c("[NA]", "[B][M]", "[B]", "[B][M]", "[B][M]", "[NA]")
[6]c("[NA]", "[B][M]", "[B]", "[B][M]", "[B][M]", "[NA]")
答案 0 :(得分:2)
data.frame已经是矢量列表(长度相等)。您可以像对待列表一样对待它。
UPDATE
答案 1 :(得分:1)
您可以使用以下内容:
a <- apply(df,1,as.vector)
现在您可以使用
编制索引a[1,]
第一个向量(数据框中的第一列),依此类推
答案 2 :(得分:1)
我怀疑您正在寻找dput
。这样可以获取R对象的文本表示形式。
但是,首先请注意,您的原始字符向量将由data.frame
转换为因数,因此您需要解决该问题,并在需要时进行转换。其次,dput
的输出既可以直接写入文件,也可以写入控制台(可以在其中复制和粘贴)。您可能需要使用invisible
来避免其他返回的对象引起混乱。
invisible(lapply(df, function(x) dput(as.character(x))))
c("1", "2", "3", "4", "5", "6")
c("440", "511", "1087", "686", "867", "632")
c("3", "2", "2", "2", "2", "4")
c("[NA]", "[B]", "[B]", "[B]", "[B]", "[B]")
c("[NA]", "[B][M]", "[B]", "[B][M]", "[B][M]", "[NA]")
c("[NA]", "[B][M]", "[B]", "[B][M]", "[B][M]", "[NA]")
如果要将文本表示形式存储在字符向量中,可以使用capture.output
,但请注意,向量中的引号将被转义。
capture.output(invisible(lapply(df, function(x) dput(as.character(x)))))
[1] "c(\"1\", \"2\", \"3\", \"4\", \"5\", \"6\")"
[2] "c(\"440\", \"511\", \"1087\", \"686\", \"867\", \"632\")"
[3] "c(\"3\", \"2\", \"2\", \"2\", \"2\", \"4\")"
[4] "c(\"[NA]\", \"[B]\", \"[B]\", \"[B]\", \"[B]\", \"[B]\")"
[5] "c(\"[NA]\", \"[B][M]\", \"[B]\", \"[B][M]\", \"[B][M]\", \"[NA]\")"
[6] "c(\"[NA]\", \"[B][M]\", \"[B]\", \"[B][M]\", \"[B][M]\", \"[NA]\")"