Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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
在R中移动.csv文件中的列表;无法正确使用'unlist'_R_List_Csv - Fatal编程技术网

在R中移动.csv文件中的列表;无法正确使用'unlist'

在R中移动.csv文件中的列表;无法正确使用'unlist',r,list,csv,R,List,Csv,我在R中生成了列表L,带有 L <- list() L[[1]] <-cbind ("Orks", "Eldar") L[[2]] <-cbind ("Nid", "Tau") 我想用以下输出编写一个.csv文件 Number Type 1 Orks, Eldar 2 Nid, Tau i、 e.将列表组件L[[i]]传输到文件的第i行,使用上述拆分和列名。我开始使用 LL <- data.frame(matrix(unli

我在R中生成了列表L,带有

L <- list()
L[[1]] <-cbind ("Orks", "Eldar")      
L[[2]] <-cbind ("Nid", "Tau")   
我想用以下输出编写一个.csv文件

Number  Type
1       Orks, Eldar
2       Nid, Tau
i、 e.将列表组件L[[i]]传输到文件的第i行,使用上述拆分和列名。我开始使用

LL <- data.frame(matrix(unlist(L), nrow=2) )

LL您可以使用以下方法更改数据的形状:

data.frame(
  Number = seq_along(L),
  Type   = vapply(L, toString, character(1))
)

如果在值中使用逗号(如在
Type
列中),您可能更喜欢使用制表符作为分隔符而不是逗号来保存文件。(调用
read.delim
代替
read.csv
)R将正确引用带有逗号的值,但其他软件可能需要一些修改来读取文件。

您需要使用
I()
来保护
列表
结构(在
公式
对象中更常用)

I()
是一个用于

更改对象的类以指示它应按“原样”处理


我将
sapply
替换为
vapply
,因为当
L
长度为零时,它可以正常工作。有趣的是:输出
df[1,2]
是一个1x2矩阵。你知道为什么
print
方法会选择在里面加一个逗号吗?非常巧妙的想法。不过,将列表强制放入数据帧有点不标准,可能会导致代码难以理解。请注意,
write.csv
的输出也有点奇怪。不幸的是,我无法改进
write.csv
的输出;我相信这是因为数据帧的每个元素都是一个矩阵,正如你们都提到的。有什么想法吗?:-)@Avitus关于
data.frame(Number=1:length(L),Type=do.call(paste,L))
?这对您的输出有帮助吗?@RichieCotton实际上这是
I()
的一个有文档记录的用例(但同意这不是一个使用良好的用例)。。。并确保矩阵作为单列插入。
ldply
,在适当的条件下,也可以从
plyr
包快速完成此操作。
data.frame(
  Number = seq_along(L),
  Type   = vapply(L, toString, character(1))
)
data.frame( Number = 1:length(L) , Type = I(L) )
#  Number        Type
#1      1 Orks, Eldar
#2      2    Nid, Tau