我刚刚开始学习R编程,并且发现了使用以下变量对数据框进行子集化的问题:
> names(data)
[1] "Date" "sulfate" "nitrate" "ID"
要获得一个变量的平均值,我只需使用:
平均(数据$硫酸盐)
[1] 3.880701
如果我想在变量“ID”为1时变量“sulcate”的平均值,我使用:
mean(subset(data,ID == 1)$ sulfate)
[1] 3.004444
但是,当ID为1:5的范围时,如果我想要“sulcate”的意思,我会收到错误:
mean(subset(data,ID == 1:5)$ sulfate)
[1] 3.714615 警告信息: 在ID == 1:5: 较长的物体长度不是较短物体长度的倍数
如何指定长度为>的向量? 1(即1:10,5:8),以过滤变量?
答案 0 :(得分:0)
您希望%in%
代替==
mean(subset(data, ID %in% 1:5)$sulfate)
或者也许:
mean(data$sulfate[data$ID %in% 1:5])
该警告意味着当1:5
延长到data$ID
的长度时,它不会被回收整数次。如果行数可以被5整除,那么结果会更糟。在这种情况下,会以静默方式返回错误的结果。