gpt4 book ai didi

r - 如何使用列名创建一个空数据表,然后将数据表附加到它?

转载 作者:行者123 更新时间:2023-12-03 13:19:55 30 4
gpt4 key购买 nike

首先,我想创建一个带有列名的空数据表,但它失败了:

data <- data.table(va, vb, vc)

> Error in data.table(va, vb, vc) : object 'va' not found

其次,我想将数据表附加到它,但它也失败了:
data2 <- data.table(va=c(-1,0,1), vb=c(-1,0,1), vc=c(-1,0,1))
data2
va vb vc
1: -1 -1 -1
2: 0 0 0
3: 1 1 1
merge(data2,data2)

> Error in merge.data.table(data2, data2) :
Can not match keys in x and y to automatically determine appropriate `by` parameter. Please set `by` value explicitly.

显然该函数无法识别 by具有两个相同数据表的参数。任何的想法?

最佳答案

创建一个空的data.table 使用(假设所有列都是数字):

library(data.table)    
data <- data.table(va=numeric(), vb=numeric(), vc=numeric())
data

这导致:
> data
Empty data.table (0 rows) of 3 cols: va,vb,vc

对所有列进行自联接 使用(即使结果相同;-):
data2 <- data.table(va=c(-1,0,1), vb=c(-1,0,1), vc=c(-1,0,1))
data2
merge(data2, data2,by=names(data2))

必须指定 by 的原因参数是 merge 的记录语义:

by:

A vector of shared column names in x and y to merge on. This defaults to the shared key columns between the two tables. If y has no key columns, this defaults to the key of x.



由于您没有设置任何键,因此合并数据表的“连接”列不清楚。

如果省略 by,则没有隐含的“使用所有列”语义。参数(如上所述,采用共享键列)。

追加所有行 将 data.table 转换为您使用的另一个 rbind ("行绑定(bind)") 而不是 merge :
data3 <- rbind(data2, data2)
data3

结果是:
> data3
va vb vc
1: -1 -1 -1
2: 0 0 0
3: 1 1 1
4: -1 -1 -1
5: 0 0 0
6: 1 1 1

关于r - 如何使用列名创建一个空数据表,然后将数据表附加到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37376398/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com