作者huangsam (sam)
看板R_Language
标题[问题] which与if运用
时间Thu Dec 1 16:03:29 2016
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
请把以下不需要的部份删除
使用者(已经有用R 做过不少作品)
[问题叙述]:
请简略描述你所要做的事情,或是这个程式的目的
目前有个DATA 想要判断在某个列是否被取代过如果没有被取代过就换新的
举例
DATA
栏位1
NA
NA
NA
NA
NA
NA
NA
NA
好比说我前面有先跑程式发现我想取代1,3,5列
那我就先判断是否为NA若是NA则改写成A
改写如下
A
NA
A
NA
A
NA
.
.
.
接下来我会再判断要被替换的列为1,4,改写成B
因为第一列被改写则为但是第四列没有则指会改写第四列
A
NA
A
B
A
NA
.
.
.
想问有没有更快速的方法因为有时候资料量大的时候会跑比较久
[程式范例]:
for(j in which(ind==1))
{
DT[j] <- ifelse(DT[j]==0, 要被取代的值,DT[i] )
}
[环境叙述]:
[关键字]:
which , for ,ifelse
选择性,也许未来有用
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.51.170.56
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1480579411.A.B69.html
1F:推 Edster: 把一开始要取代的位置1,3,5 跟第2次要取代的位置2,4 都留 12/01 16:16
2F:→ Edster: 下来。 12/01 16:16
3F:→ Edster: 第二次是1,4 。 12/01 16:17
4F:→ Edster: 如果存成list 你就用lappy(position_list, setdiff) 12/01 16:19
5F:→ Edster: 好像也不能,再想一下 12/01 16:19
6F:推 cywhale: idx <- intersect(which(is.na(DT)), new_idx) 12/01 16:42
7F:→ cywhale: DT[idx] <- newdata[new_idx %in% idx] 12/01 16:43