我有数据框,第一列作为分类标识符,第二列作为频率值,其余列作为原始数据计数。我想将所有计数列乘以频率列而不是前两列。
所有原始计数列都以大写字母开头,然后是句号,例如" L.abd",T.xyz等。
例如,如果我使用代码:
require(dplyr)
ID <- c(1,2,3,4,5,6)
Freq <- c(0.1,0.2,0.3,0.5,0.1,0.3)
L.abc <- c(1,1,1,3,1,0)
L.ABC <- c(0,3,2,4,1,1)
T.xyz <- c(1,1,1,1,0,1)
F.ABC <- c(4,5,6,5,3,1)
df <- as.data.frame(cbind(ID, Freq, L.abc, L.ABC, T.xyz, F.ABC))
df_new <- df %>% mutate_each(funs(.*Freq), starts_with("L."))
我可以创建一个新的数据框,其中包含分类数据列以及以&#34; L开头的列。&#34;已乘以相应的频率值。
有没有办法改变&#34; starts_with&#34;命令选择以大写字母和句号开头的所有列?我尝试使用&#34; [A-Z]等修改约会。&#34;没有成功。
提前致谢
答案 0 :(得分:7)
对于这些情况, NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[path stringByAppendingPathComponent:@"/com.apple.nsurlsessiond/Downloads/com.xxx.xxx/"] error:nil];
for (NSString *string in array) {
[[NSFileManager defaultManager] removeItemAtPath:[path stringByAppendingPathComponent:[NSString stringWithFormat:@"/com.apple.nsurlsessiond/Downloads/com.xxx.xxx/%@", string]] error:nil];
}
会更合适
NSString *path = NSTemporaryDirectory();
NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
for (NSString *string in array) {
[[NSFileManager defaultManager] removeItemAtPath:[path stringByAppendingPathComponent:string] error:nil];
}
在这里,我假设你只想matches
只有以大写字母( df %>%
mutate_each(funs(.*Freq), matches("^[A-Z]\\.", ignore.case=FALSE))
)开头,后跟select
的列名。我们必须逃避^[A-Z]
(.
),否则它将被视为任何单个字符。
除.
部分外,我没有改变任何事情。在\\.
中,如果我们需要传递一个函数,它可以在starts_with
调用内传递。在上面的代码中,我们将mutate_each
选择的每个列(funs
)乘以&#39; Freq&#39;列。
根据.
'matches(x,ignore.case = TRUE)':选择其所有变量 name匹配正则表达式'x'
编辑:添加了@docendodiscimus评论&#39>
答案 1 :(得分:3)
我刚刚回复了来自其他用户的a related question,mutate_each
将被弃用,而不是mutate_at
。
在您的情况下,等效代码为:
df %>% mutate_at(.cols=vars(matches("^[A-Z]\\.", ignore.case=FALSE)), .funs=funs(.*Freq))
ID Freq L.abc L.ABC T.xyz F.ABC
1 1 0.1 0.1 0.0 0.1 0.4
2 2 0.2 0.2 0.6 0.2 1.0
3 3 0.3 0.3 0.6 0.3 1.8
4 4 0.5 1.5 2.0 0.5 2.5
5 5 0.1 0.1 0.1 0.0 0.3
6 6 0.3 0.0 0.3 0.3 0.3