R语言中与data.frame等价的tibble数据框创建代码咨询
解决tibble列尺寸兼容错误的等价代码
问题原因
data.frame()会自动循环长度为n的向量,使其匹配最长列的长度(只要最长列长度是n的整数倍),但tibble()的规则更严格——仅允许长度为1的向量自动循环,其他长度的向量必须与已有列的长度完全一致,因此直接复用data.frame()的写法会触发尺寸不兼容错误。
等价tibble代码
要生成与目标数据框完全一致的tibble,需手动将Gender向量扩展至与Completers相同的长度:
nn <- 5 # 原示例中目标数据框共10行,因此nn取值为5(rep(c(1,0), each=5)生成10个元素) tb <- tibble::tibble( Completers = rep(c(1, 0), each = nn), Gender = rep(c(1, 0), length.out = 2 * nn) )
如果需要对应nn=10时的20行结果(即data.frame()自动循环Gender后的完整输出),代码如下:
nn <- 10 tb <- tibble::tibble( Completers = rep(c(1, 0), each = nn), Gender = rep(c(1, 0), length.out = 2 * nn) )
关键说明
- 使用
rep(c(1,0), length.out = 2*nn)明确指定Gender的长度,确保与Completers的长度(2*nn)严格匹配,规避tibble的尺寸检查错误。 - 这种写法完全复刻了
data.frame()中自动循环短向量的行为,但符合tibble()的严格规则。
内容的提问来源于stack exchange,提问作者pdeli
相关产品推荐
相关产品推荐

