Как выбрать подмножество кадра данных, используя переменную динамически - PullRequest
0 голосов

У меня есть R-фрейм данных с 300 столбцами.Я провел анализ основных компонентов и взял 110 верхних столбцов, которые объясняют изменчивость набора данных.Как передать список имен 110 столбцов в функцию R для выбора подмножества исходного кадра данных, содержащего только эти столбцы?

Пожалуйста, см. Код ниже.

t.df = read.xlsx('t_dataset.xlsx', 1,startRow=1 )
X=t.df[ , 3:307]
t.pca=PCA(X, graph=FALSE)
write.infile(t.pca$var$contrib, "pca.csv", sep=',')

t.df.pca = read.xlsx('pca1.xlsx', 1,startRow=1 )
t.df.pca.r=subset(t.df.pca, Dim.1>mean(Dim.1) | Dim.2>mean(Dim.2) | Dim.3>mean(Dim.3) | Dim.4>mean(Dim.4) | Dim.5>mean(Dim.5))

c1=c(t.df.pca.r$Column)

#c1 contains the list of 110 column names.

c2=cat(paste(shQuote(c1), collapse=", "))
print(c2)

вывод print (c2): «funct», «местоимение», «ppron», «i», «мы», «вы», «shehe», «они», «ipron», «article», «глагол», «auxverb», «прошлое», «настоящее», «будущее», «наречие», «кон», до 110 переменных

t.df.2=t.df[c(c2)]
nrow(t.df.2)
ncol(t.df.2)

t.df.4=t.df[c2]
nrow(t.df.4)
ncol(t.df.4)

t.df.5=t.df[ ,c2]
nrow(t.df.5)
ncol(t.df.5)

Приведенный выше код возвращает результат следующим образом: [1] 45498 [1] 0

[1] 45498 [1] 0

[1] 45498 [1] 0

Что мне нужно: передать эти имена столбцов в функцию R и получить подмножествооригинального кадра данных t.df.Это подмножество будет содержать только 110 столбцов, присутствующих в c1

Как это сделать?

1 Ответ

0 голосов
/ 07 мая 2019

Вот один из способов сделать это с примером фрейма данных:

library(tidyverse)

df <-
  tibble(
    col1 = c(1, 2, 3),
    col2 = c(2, 3, 4),
    col3 = c(3, 4, 5)
  )

cols_to_keep <- c("col1", "col3")

df %>% 
  select(cols_to_keep)

Я не знаю, в каком формате находятся ваши данные, но пока вы получаете вектор имен столбцов, вам следуетуметь использовать команду select.

...