将R哈希表写入CSV文件?

时间:2015-05-11 10:20:59

标签: r csv save dataframe hashtable

我想要实现的是将一个R哈希表写入csv文件excel(第一列中的格式化文件密钥列和第二列中的值)。请考虑这个例子。 (哈希表由哈希包创建)

<hash> containing 5 key-value pair(s).
  1 : 4
  2 : NULL
  3 : NULL
  4 : 3 1
  5 : 1 4

当我只是使用这个

write.csv(hash, file = "hash.csv",row.names=FALSE)

它给了我这个错误

Error in as.data.frame.default(x[[i]], optional = TRUE) : 
  cannot coerce class "structure("hash", package = "hash")" to a data.frame

所以我尝试从每个键和值创建一个数据帧,然后绑定它们:

a<-as.data.frame(keys(hash))
b<-as.data.frame(values(hash))
Error in data.frame(`1` = "4", `2` = NULL, `3` = NULL, `4` = c("3", "1" : 
  arguments imply differing number of rows: 1, 0, 2

然后创建一个列表和一个向量:

a<-keys(hash)
b<-values(hash)
d<-cbind(a,b)
f<-as.data.frame(d)
  a    b
1 1    4
2 2 NULL
3 3 NULL
4 4 3, 1
5 5 1, 4

但是当我尝试写它时:

write.csv(f, file = "hash.csv",row.names=FALSE)
Error in .External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol,  : 
  unimplemented type 'list' in 'EncodeElement'

有没有其他方法可以做到这一点或以任何方式来解决这个错误? 提前谢谢你。

1 个答案:

答案 0 :(得分:0)

这对我有所帮助。但由于我正在寻找更好的解决方案,这还不是我的问题的答案。

a<-keys(hash)
  b<-values(hash)
  d<-cbind(a,b)
  L<-as.data.frame(d)
  L.df <- data.frame(lapply(L, as.character), stringsAsFactors=FALSE)
  write.csv(f.df, file ="file.CSV",row.names=FALSE)
    csv file format
    # a b
    # 1 4
    # 2 NULL
    # 3 NULL
    # 4 c("3", "1")
    # 5 c("1", "4")