创建一个没有列但是有200行的空数据框。

14

这是我可以做到的方法:

df <- data.frame(a=1:200)
df$a <- NULL
df

结果:

data frame with 0 columns and 200 rows

只用一个命令能实现同样的效果吗?


4
我猜首先会出现在你脑海里的问题是“为什么?”。蜘蛛感觉到你将使用一个 for 循环来尝试填充这个,如果你发布你想要实现的目标,可能会有更好的方法。 - hrbrmstr
还可以在这里查看这里 - akrun
1
@hrbrmstr,不,那只是出于好奇。我知道你在想什么,是的,我会将lapply与Reduce结合使用以达到相同的效果。 - January
3个回答

34

这可以工作(如果不将对2个函数的调用视为2个命令):

data.frame(matrix(, nrow=200, ncol=0))
#data frame with 0 columns and 200 rows

编辑:另一个选项是 data.frame()[1:200, ]


data.frame()[1:200, ]
# data frame with 0 columns and 200 rows

1
@SashkoLykhenko 你用的是哪个版本的 R?(在 R 3.3.0 版本中可以正常工作) - Cath
3
数据框(data.frame)(矩阵(matrix)(行数=200,列数=0))这样也可以运行。 - Dimitrios Zacharatos
@Cath data.frame()[1:10, ] 创建了一个空的数据框,但是在使用循环填充值时,我们会得到奇怪的行名。df = data.frame()[1:10, ]for (i in 1:10){ x = i+2 y = i+20 df$x = x df$y = y }df - Dr Nisha Arora
1
@DrNishaArora 在创建空数据框时,row.names 被设置为 NA,然后是索引,以避免重复的行名称。(话虽如此,我怀疑你的循环不会给你想要的输出) - Cath
@DrNishaArora 注意,如果您已经知道要放入data.frame中的内容,则无需创建一个空的data.frame。 - Cath
显示剩余2条评论

13

这个怎么样?

data.frame(row.names = 1:200)

4
这是我通过 dput 发现的信息:
structure(
   list(), 
   .Names = character(0), 
   row.names = c(NA, -200L), 
   class = "data.frame"
 )

那个 row.names 技巧可能仅适用于最近版本的 R 和新的 ALTREP 工作。 - dash2

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