Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将data.frame还原回R中的向量_R_List_Dataframe_Vector - Fatal编程技术网

将data.frame还原回R中的向量

将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

有没有一种简单、琐碎的方法将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]")
)

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)
这是一种有趣的方法!但它仍然是一个矩阵,需要在第二步进行转换。谢谢这是一个有趣的方法!但它仍然是一个矩阵,需要在第二步进行转换。谢谢