R:使用NULL值创建data.frame

4

我希望在我的数据框中有NULL值(而不是NA)。但以下代码似乎不起作用。

> data.frame(x = c(1, 2, 3), y = c(NULL, NULL, NULL))
Error in data.frame(x = c(1, 2, 3), y = c(NULL, NULL, NULL)) : 
  arguments imply differing number of rows: 3, 0

我的目标是将数据框输出到一个 .csv 文件中,其中单元格的 NULL 值应该为空白。


3
或许是 data.frame(x = c(1, 2, 3), y = "") - www
1
d <- data.frame(x=1:3); d$y <- replicate(3, NULL) - r2evans
5
为什么要使用NULL值?你计划在其中存储什么?通常情况下,R中无法有包含NULL值的集合。请使用NA值,write.table()函数允许您控制这些值的呈现方式:na = "NA" - MrFlick
1
一般来说,在数据框中具有字面上的 NULL 值是非常棘手的。我认为更合适的问题是(你已经问了):“如何在 CSV 中获取空值”。 - r2evans
@www 是的,我想那就是这个意思。但是我不确定在mysql中一个空白是否一定等同于 NULL。我需要更深入地挖掘一下。如果你愿意,可以将你的评论添加为答案。 - Adrian
显示剩余5条评论
1个回答

7
您可以使用以下代码获取包含NULL条目的数据框架: > data.frame(x = c(1, 2, 3), y = I(list(NULL, NULL, NULL))) 解释:
如果您想使用data.frame包含常量NULL的列,需要使用I进行保护。
还需要输入list而不是cNULL。这是因为c(NULL, NULL, NULL)NULL相同——NULL不能连接。它们也不能成为向量的元素,所以每个包含NULL值的列都需要是列表而不是向量。
使用write.table和类似函数将调用as.character中包含NULL的列,写入空单元格中的字符串"NULL"。如果不希望出现这种行为,则最好使用空字符串而不是NULL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接