【发布时间】:2019-05-06 21:27:29
【问题描述】:
我有一个包含 300 列的 R 数据框。 我已经完成了主成分分析并抓住了解释数据集可变性的前 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) 的输出: “功能”、“代词”、“ppron”、“i”、“我们”、“你”、“shehe”、“他们”、“ipron”、“文章”、“动词”、“辅助动词”、“过去” ", "present", "future", "adverb", "conj", 最多 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 的子集。该子集将仅包含 c1 中存在的 110 列
如何做到这一点?
【问题讨论】:
-
带有提取
[函数的简单子集:orig_df[vector_of_column_names]。 -
Srikrishna Krishnarao,到目前为止,所有 cmets 和答案都在说两件事:(1)只需使用
[,使用列名的向量,就像你说的那样,ala @987654327 @; (2) 我认为您最好花一两分钟时间阅读?Extract以及一些关于在 R 中索引矩阵和框架的好教程,因为它看起来好像是一个简单的应用程序。如果我们完全错了,您需要以其他方式说服我们,因为它看起来就是这样。祝你好运! -
我已经发布了我尝试过的所有表格。确实它看起来很简单,但是,我不知道为什么没有收到所需的输出。