如果循环返回索引值而不是矢量字符值

时间:2015-09-13 19:40:56

标签: r

从下面的数据集中:

         Referee      Tca
1       A D'Urso 2.733333
2       A Davies 3.529412
3       A Haines 2.722222
4       A Madley 3.407407
5     A Marriner 3.640000
6       A Taylor 3.603448
7      A Woolmer 3.222222
8       B Malone 1.636364
9        C Berry 3.800000
10     C Boyeson 3.800000

我正在尝试创建一个简单的循环,通过Tca>为我提供裁判的名字。 4。

循环代码是:

test <- NULL
for (i in c(1:length(gio$Referee))) {
if(gio$Tca[i] > 4){
    test[i] <- gio$Referee[i]
 }
}

但是这不会返回一个名单列表,而是一个索引列表:

我如何获得裁判列表而不是索引?

3 个答案:

答案 0 :(得分:1)

你可以尝试

<local:WeatherEnumValues x:Key="WeatherEnumValues" />

(我在这里选择了"{Binding whatever, Converter={StaticResource converterName}, ConverterParameter={Binding Hot, Source={StaticResource WeatherEnumValues}}}" /> ,因为您的标准as.character(with(gio,Referee[Tca>3])) [1] "A Davies" "A Madley" "A Marriner" "A Taylor" "A Woolmer" "C Berry" "C Boyeson" 会产生带有给定样本数据的空向量。

数据

Tca > 3

答案 1 :(得分:0)

调用你的数据帧df你可以简单地使用dplyr,过滤你的df做这样的事情:

  library(dplyr)
  filtered_df = filter(df, Tca > 4)

答案 2 :(得分:0)

因为引用因子变量会给出因子级别而不是因子值

您获取索引而不是名称的原因是因为gio$Referee被存储为因子,当您使用factor[any index]引用因子时,您获得的是索引,而不是因子值。

要使系数值附加as.character

test <- NULL
for (i in c(1:length(gio$Referee))) {
    if(gio$Tca[i] > 3){
        test[i] <- as.character(gio$Referee[i])
    }
}

注意:我已将条件修改为大于3。

这将输出为

test
 [1] NA           "A Davies"   NA           "A Madley"   "A Marriner" "A Taylor"  
 [7] "A Woolmer"  NA           "C Berry"    "C Boyeson" 

现在这些NA是因为你用NULL初始化并且只在满足条件的索引处放置值。

是一个更好的for循环
test <- character()
for (i in c(1:length(gio$Referee))) {
    if(gio$Tca[i] > 3){
        test<-append(test,as.character(gio$Referee[i]))
    }
}

这里我使用空字符数组初始化测试,并且我追加满足我条件的gio$Referee中的值。这使输出为

test
[1] "A Davies"   "A Madley"   "A Marriner" "A Taylor"   "A Woolmer"  "C Berry"   
[7] "C Boyeson"

高于一切,每个人都说过

您不需要循环来执行此操作

将数据框子集为

gio$Referee[gio$Tca>3]

这意味着从Referee gio gio$Tca大于3

给我let quadruple x = let double x = x * 2