R中的数据帧名称重复

R中的数据帧名称重复,r,dataframe,R,Dataframe,我只是生成了一个空的数据框,然后用随机数据填充它,但开始出现列名称的问题,基本上我想清除这些名称并使它们唯一 我正在分享我的全部代码,因为我不知道是什么引起了麻烦 df <- data.frame(ID=integer(),AA=character(),AAA=integer(),Z=double(),stringsAsFactors=FALSE) #empty dataframe df <- data.frame(ID=c(1:10)) #Consecutive numbers A

我只是生成了一个空的数据框,然后用随机数据填充它,但开始出现列名称的问题,基本上我想清除这些名称并使它们唯一

我正在分享我的全部代码,因为我不知道是什么引起了麻烦

df <- data.frame(ID=integer(),AA=character(),AAA=integer(),Z=double(),stringsAsFactors=FALSE) #empty dataframe
df <- data.frame(ID=c(1:10)) #Consecutive numbers
AA <- sample(c("yes","no"), 10, replace=TRUE, prob = c(0.53, 0.47)) #Random data
df$AA<-as.data.frame(AA)
AAA<-sample(22:60, size=10, replace=TRUE) #Random data
df$AAA<-as.data.frame(AAA)
df$Z<-df$Z <- with(df, (AA == 'yes') * 0.25 + (AAA < 30) * 0.25) #calculated field
df

然后,我尝试使用
colnames(df)[4]重命名列名,您正在数据帧内创建嵌套的数据帧。尝试:

df <- data.frame(ID=c(1:10)) #Consecutive numbers
df$AA<- sample(c("yes","no"), 10, replace=TRUE, prob = c(0.53, 0.47)) #Random data
df$AAA<-sample(22:60, size=10, replace=TRUE) #Random data
df$Z <- with(df, (AA == 'yes') * 0.25 + (AAA < 30) * 0.25) #calculated field

GGally::ggpairs(df)

df您似乎在data.frame中存储data.frames和矩阵。你通常不会这么做。通常,您只需在data.frame中存储原子向量。你想要这样一个奇怪的结构有什么原因吗?或者这真的是一个需要解决的问题。Hi-MrFlick在数据帧中嵌套东西是需要解决的问题,现在我知道这不是一个好的做法。有趣的解决方案James肯定dplyr是最好的库之一
   ID  AA.AA AAA.AAA   Z
1   1   yes    56   0.25
2   2    no    53   0.00
library("GGally")
ggpairs(df)
plot: [1,2] [===>---------------------------] 12% est: 1s Error in `[.data.frame`(xData, rows) : undefined columns selected
df <- data.frame(ID = 1:10,
                 AA = sample(c("yes","no"), 10, replace=TRUE, prob = c(0.53, 0.47)),
                AAA = sample(22:60, size=10, replace=TRUE)
                 )

library(dplyr)
df = df %>% 
  mutate(Z = (AA == 'yes') * 0.25 + (AAA < 30) * 0.25)


df
> df
   ID  AA AAA    Z
1   1 yes  36 0.25
2   2 yes  37 0.25
3   3  no  45 0.00
4   4 yes  28 0.50
5   5 yes  52 0.25
6   6 yes  43 0.25
7   7 yes  50 0.25
8   8 yes  39 0.25
9   9 yes  59 0.25
10 10  no  32 0.00
df <- data.frame(ID=c(1:10)) #Consecutive numbers
df$AA<- sample(c("yes","no"), 10, replace=TRUE, prob = c(0.53, 0.47)) #Random data
df$AAA<-sample(22:60, size=10, replace=TRUE) #Random data
df$Z <- with(df, (AA == 'yes') * 0.25 + (AAA < 30) * 0.25) #calculated field

GGally::ggpairs(df)