将data.frame还原回R中的向量
有没有一种简单、琐碎的方法将data.frame还原回向量 考虑下面的示例数据帧:将data.frame还原回R中的向量,r,list,dataframe,vector,R,List,Dataframe,Vector,有没有一种简单、琐碎的方法将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
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]")
)
data.frame已经是一个向量列表(长度相等)。你可以把它当作一张清单
class(mtcars)
# [1] "data.frame"
is.list(mtcars)
# [1] TRUE
mtcars[["cyl"]]
# [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4
for (x in mtcars) {
print(length(x))
}
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
data.frame已经是一个向量列表(长度相等)。你可以把它当作一张清单
class(mtcars)
# [1] "data.frame"
is.list(mtcars)
# [1] TRUE
mtcars[["cyl"]]
# [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4
for (x in mtcars) {
print(length(x))
}
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
# [1] 32
您可以使用以下选项:
a <- apply(df,1,as.vector)
对于第一个向量(数据帧中的第一列)等,您可以使用以下内容:
a <- apply(df,1,as.vector)
对于第一个向量(数据帧中的第一列)等等,我怀疑您正在寻找
dput
。这允许您获取R对象的文本表示
但是,首先请注意,原始字符向量将通过data.frame
转换为因子,因此需要对此进行说明,并在需要时进行转换。其次,dput
的输出可以直接写入文件,也可以写入控制台(在控制台可以复制和粘贴)。您可能需要使用不可见
,以避免其他返回的对象造成混淆
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]\")"
我怀疑您正在寻找
dput
。这允许您获取R对象的文本表示
但是,首先请注意,原始字符向量将通过data.frame
转换为因子,因此需要对此进行说明,并在需要时进行转换。其次,dput
的输出可以直接写入文件,也可以写入控制台(在控制台可以复制和粘贴)。您可能需要使用不可见
,以避免其他返回的对象造成混淆
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]\")"
as.list(df)
,虽然这对df
没有好处,但我想。@Frank我实际上是想让另一段代码工作,所以这是我的目标。请参见Lappy(df,cat),尽管它只是显示它。如果您想要一个逗号分隔的版本,它可能是lappy(df,deparse)
as.list(df)
,尽管这对df
没有好处,我想。@Frank我实际上是在尝试让另一段代码工作,所以这是我的目标。请参见Lappy(df,cat),尽管它只是显示它。如果您想要逗号分隔的版本,它可能是lappy(df,deparse)
这是一种有趣的方法!但它仍然是一个矩阵,需要在第二步进行转换。谢谢这是一个有趣的方法!但它仍然是一个矩阵,需要在第二步进行转换。谢谢