我有一个300列的R数据框。 我完成了主成分分析,并抓住了解释数据集变异性的前110列。 我们如何将110列名称列表传递给R函数,以选择仅包含这些列的原始数据框的子集?
请参见下面的代码。
NAME READY STATUS RESTARTS AGE
coredns-6fdd4f6856-6bl64 0/1 Pending 0 1h
coredns-6fdd4f6856-xgrbm 0/1 Pending 0 1h
kubernetes-dashboard-65c76f6c97-c69jg 0/1 Pending 0 13m
print(c2)的输出: “功能”,“代词”,“ ppron”,“ i”,“我们”,“您”,“ shehe”,“ they”,“ ipron”,“ article”,“ verb”,“ auxverb”,“ past” “,”现在“,”未来“,”副词“,” conj“,最多110个变量
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)
以上代码返回结果,如下所示: [1] 45498 [1] 0
[1] 45498 [1] 0
[1] 45498 [1] 0
我需要的是:将这些列名称传递给R函数,并获取原始数据帧t.df的子集。该子集将仅包含c1中存在的110列
该怎么做?
答案 0 :(得分:0)
这是一种实现方法,带有示例数据框:
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
命令。