匹配从一个列表到dataframe列的值

时间:2015-05-23 00:24:42

标签: r

我有一个数据帧和一个特征向量列表。我试图获取特征向量列表,将每个特征向量(它们按顺序)匹配到数据帧列并返回仅包含特征向量大于1的列的数据帧。我的伪代码看起来像这样:

1) get eigenvalues for matrix stored as variable (called: ev)
2) iterate through each element of ev
3) check if the absolute value of the element is greater then 1
    3a) if so, return dataframe column

我想这样做是R就像这样:

#1
count=0
matr<as.matrix(MY_DF)
matr_temp1<-matr[,1:length(matr[,1])]#force matrix to drop COLS to have same number rows as cols
ev<-eigen(matr_temp1)$values
#2
result<-lapply(ev, function(x){
  count+=1
  if((abs(x)>1),return count)
})
#3
abs(x)>1
#3a
#convert numbers to df columns
df=subset(df,select=c(result))

显然这需要工作,有人可以建议改变吗?解释会很棒:)

数据框中转换为矩阵的片段(如果您需要更多数据,请告诉我)

    > df[1:5,1:5]
  achievement.mineWood achievement.openInventory dyad_number stat.damageDealt stat.damageTaken
1                    2                         6           1             1170             2210
2                   17                        12           1              840              800
3                   48                        37           2             2595              520
4                   16                        22           3             5410             3105
5                   36                         6           3             2720             3300

前5个特征值:

> ev[1:5]
[1]  646127.12+    0.00i -118038.12+    0.00i   65537.13+    0.00i  -34741.55+33905.02i  -34741.55-33905.02i

1 个答案:

答案 0 :(得分:1)

我的问题的解决方案是单行,感谢@ user20650。

df[, abs(ev) > 1]

这遍历数据框df并仅返回列表ev中的数据> 1的列