【发布时间】:2014-06-08 02:08:37
【问题描述】:
我有一个名为dualbeta 的大型dataframe,其中包含2 行6080 列。这是一个示例:
row.names A.Close AA.Close AADR.Close AAIT.Close AAL.Close
1 upside 1.253929 0.9869027 0.6169613 0.6353903 0.1782124
2 downside 1.027412 1.1936236 0.5915299 0.5697878 0.1702382
我试图仅提取具有upside >= 1.00 的那些和具有downside combinations <- subset(dualbeta, upside>=1.00 & downside<=1.00),但得到以下信息:
row.names A.Close AA.Close AADR.Close AAIT.Close
1 NA NA NA NA NA
2 NA.1 NA NA NA NA
3 NA.2 NA NA NA NA
4 NA.3 NA NA NA NA
5 NA.4 NA NA NA NA
...
它应该只返回一个2 by x 表,其中 x 是找到的组合数。我不知道为什么我得到一堆行?此外,我认为我在dualbeta 中有NA 值,所以我使用了na.omit(dualbeta)->dualbeta,但它删除了所有内容并将dualbeta 变成了0 by 6080。我还使用了which(is.na(dualbeta)),它返回了3307 和3308,但是当我检查这些列时,它们不包含NA。
【问题讨论】:
-
subset作用于列名,而不是行值。那么当你说upside>1.00时,那一行中的哪个值是“上行”? -
@MrFlick 我明白了。但即使我使用
combinations <- subset(dualbeta, dualbeta[1,]>=1.00 & dualbeta[2,]<=1.00)我仍然遇到同样的问题 -
嗯,你的第一列是名字,对吧(
dualbeta[1,])? “upside”这个名字怎么会大于1.00?你没有收到任何警告吗?也许你应该用dput(head(dualbeta))的结果替换你的样本数据,这样我们就可以看到你真正使用的是什么类型的对象。 -
哦,对不起。我明白了,
dualbeta[1,]是行,而不是列。无论如何,您不能使用subset来对这样的列进行子集化。subset仅适用于行。 -
@MrFlick
dualbeta[1,]包含upside的值。例如dualbeta[1,1]返回1.253929,这是A.Close的优势。