web-dev-qa-db-ja.com

Rを使用して、dplyr:selectを使用して「一部の引数が同じ名前を持つため、データをバインドできません」を取得する

#use readtable to create data frames of following unzipped files below
x.train <- read.table("UCI HAR Dataset/train/X_train.txt")
subject.train <- read.table("UCI HAR Dataset/train/subject_train.txt")

y.train <- read.table("UCI HAR Dataset/train/y_train.txt")
x.test <- read.table("UCI HAR Dataset/test/X_test.txt")
subject.test <- read.table("UCI HAR Dataset/test/subject_test.txt")

y.test <- read.table("UCI HAR Dataset/test/y_test.txt")
features <- read.table("UCI HAR Dataset/features.txt")
activity.labels <- read.table("UCI HAR Dataset/activity_labels.txt")   





colnames(x.test) <- features[,2]
dataset_test <- cbind(subject.test,y.test,x.test)
colnames(dataset_test)[1] <- "subject"
colnames(dataset_test)[2] <- "activity"

test <- select(features, V2)

dataset_test <- select(dataset_test,subject,activity)

[1] Error: Can't bind data because some arguments have the same name

-featuresは2列のデータフレームで、2列目にはx.testの名前が含まれています

-subject.testは単一列のデータフレームです

-y.testは単一列のデータフレームです

-x.testはワイドデータフレームです

これらのデータフレームに名前を付けてバインドした後、dplyr :: selectを使用して特定のフレームを選択しようとしました。

しかし、dataset_testを返すエラーが発生します

「エラー:一部の引数が同じ名前であるため、データをバインドできません」

ただし、テストはエラーを返さず、適切にフィルタリングします。

なぜ行動の違い?

私が使用しているデータは、

https://d396qusza40orc.cloudfront.net/getdata%2Fprojectfiles%2FUCI%20HAR%20Dataset.Zip

データソースは変数名に対応しますが、「。」の代わりに「_」が使用されます。

dput

> dput(head(x.test[,1:5],2))
structure(list(V1 = c(0.25717778, 0.28602671), V2 = c(-0.02328523, 
-0.013163359), V3 = c(-0.014653762, -0.11908252), V4 = c(-0.938404, 
-0.97541469), V5 = c(-0.92009078, -0.9674579)), row.names = 1:2, class = "data.frame")

> dput(head(subject.test,2))
structure(list(V1 = c(2L, 2L)), row.names = 1:2, class = "data.frame")

> dput(head(y.test,2))
structure(list(V1 = c(5L, 5L)), row.names = 1:2, class = "data.frame")

> dput(head(features,2))
structure(list(V1 = 1:2, V2 = c("tBodyAcc-mean()-X", "tBodyAcc-mean()-Y"
)), row.names = 1:2, class = "data.frame")
6
Doptima

このエラーは、多くの場合、同一名の列を持つデータフレームが原因で発生します。最初に確認する必要があります。私は自分のデータフレームをdplyr選択ヘルパー関数(start_with、containsなど)でチェックしようとしていましたが、それらも機能しないため、Excelまたは他のプログラムでチェックインまたは使用するには、csvにエクスポートする必要がある場合がありますチェックする基本関数 重複する列名

1
H5470