我尝试过不同的解决方案(包括几个 在stackoverflow和R帮助线程上讨论了几天。 没有人提出一个好的解决方案。因此这个帖子。
我需要创建一个数据框
df <- as.data.frame (matrix (nrow = 3470, ncol = 22,000)
前3列是字符/字符串数据。其余是数值数据。混合模式搞砸了这种方法。
df <- data.frame (c1 = char(22,000), c2 = char(22,000), c3 = char(22,000), .....)
有没有办法在此解决方案中将第4列设置为22,000作为数字? (然后我可以使用colnames(df)来设置真实姓名)。
使用类似
的内容初始化数据框 df <- data.frame (c1 = char(22,000), c2 = char(22,000), c3 = char(22,000), .....)
是否有一种机制可以使用像rep这样的东西来声明c4到c22,000 数字?
非常感谢你。 (我知道初始化数据框已经讨论了几个 倍。我尝试了几种方法,但尚未找到一个好的解决方案)。因此这篇文章来了 一个被打死的话题。
答案 0 :(得分:2)
我不确定你从哪里获得这种语法。首先,不要使用逗号作为千位分隔符;这对人类来说很好,但不适用于电脑。其次,创建角色向量的功能是character(n)
,而不是char(n)
。第三,data.frame
的参数是你想要的数据框中的列,而不是行,所以你可能想要3470,而不是22000.最后,数字向量的等价函数是numeric(n)
。
df <- data.frame(
c1 = character(3470),
c2 = character(3470),
c3 = character(3470),
n1 = numeric(3470),
...)
如果你真的有22000列,你可以通过传递一个矩阵来实现它,该矩阵将转换成多列:
df <- data.frame(
c1 = character(3470),
c2 = character(3470),
c3 = character(3470),
n = matrix(0, nrow=3470, ncol=21997))