虽然数据框列必须具有相同的行数,但是否有任何方法可以创建长度不等的数据框。我对将它们保存为列表的单独元素不感兴趣,因为我经常需要将这些信息作为csv文件通过电子邮件发送给人们,而这作为 Dataframe 是最简单的。
x = c(rep("one",2))
y = c(rep("two",10))
z = c(rep("three",5))
cbind(x,y,z)
在上面的代码中,cbind()
函数只是回收较短的列,使它们每列都有10个元素。我怎样才能改变它,使长度为2,10和5。
我以前也这样做过,但效率很低。
df = data.frame(one=c(rep("one",2),rep("",8)),
two=c(rep("two",10)), three=c(rep("three",5), rep("",5)))
6条答案
按热度按时间q3aa05251#
对不起,这不是你问的,但我想可能有另一种方法来得到你想要的。
首先,如果向量的长度不同,数据就不是真正的表格,对吗?如何将其保存到不同的CSV文件?您也可以尝试使用允许存储多个对象的ascii格式(json,XML)。
如果你觉得数据真的是表格式的,你可以在NA上填充:
如果你一定要用不等列来做一个
data.frame
,你可能会破坏检查,后果自负:csga3l582#
另一种填充方法:
na.pad()
函数利用了这样一个事实,即如果您尝试索引不存在的元素,R将自动使用NA填充向量。makePaddedDataFrame()
只找到最长的一个,并将其余的填充到匹配的长度。unftdfkk3#
为了放大@goodside的答案,你可以做一些类似的事情
pb3skfrl4#
您需要将NA填充到向量的末尾,以匹配最长向量的长度,因此您可以执行以下操作:
2eafrhcq5#
我们可以创建一个包含不等长列的数据框,方法是用空字符“"填充列。以下代码可用于创建长度不等的 Dataframe
代码首先找到列表对象的最大列长度,l然后用“”填充列。这将导致列表的每一列都有相同数量的元素。然后将列表转换为 Dataframe 。
niwlg2el6#
类似问题:
categorize(toss,50)
输出:After the toss of the coin there will be 31 Head and 19 Tail. Then the rest of the tail will be filled with NA in order to make a data frame.