在R中的特定列上应用函数

在R中的特定列上应用函数,r,apply,lapply,R,Apply,Lapply,我有一个csv文件 此文件包含以下数据- category_list,Automotive & Sports,Blanks,Cleantech / Semiconductors,Entertainment,Health,Manufacturing,"News, Search and Messaging",Others,"Social, Finance, Analytics, Advertising" ,0,1,0,0,0,0,0,0,0 3D,0,0,0,0,0,1,0,0,0 3D P

我有一个csv文件

此文件包含以下数据-

category_list,Automotive & Sports,Blanks,Cleantech / Semiconductors,Entertainment,Health,Manufacturing,"News, Search and Messaging",Others,"Social, Finance, Analytics, Advertising"
,0,1,0,0,0,0,0,0,0
3D,0,0,0,0,0,1,0,0,0
3D Printing,0,0,0,0,0,1,0,0,0
3D Technology,0,0,0,0,0,1,0,0,0
Accounting,0,0,0,0,0,0,0,0,1
Active Lifestyle,0,0,0,0,1,0,0,0,0
Ad Targeting,0,0,0,0,0,0,0,0,1
Advanced Materials,0,0,0,0,0,1,0,0,0
Adventure Travel,1,0,0,0,0,0,0,0,0
将其加载到映射数据帧时

mapping <- read.csv(file="mapping.csv", stringsAsFactors = FALSE,sep=",",check.names=FALSE)
而对于
应用(映射[2:10],1,函数(x)(x==“1”))
每行都是这样的

[[2]]
Blanks 
     8
[[1]] 2
有人能帮忙吗?

1)如果
a
是问题中
apply
的结果,那么只需按它索引列名即可:

mapping$sector_names <- names(mapping)[-1][a]
这使得:

> mapping$sector
[1] "Blanks"                                 
[2] "Manufacturing"                          
[3] "Manufacturing"                          
[4] "Manufacturing"                          
[5] "Social, Finance, Analytics, Advertising"
[6] "Health"                                 
[7] "Social, Finance, Analytics, Advertising"
[8] "Manufacturing"                          
[9] "Automotive & Sports"     
1)如果问题中的
a
apply
的结果,则只需按它为列名编制索引即可:

mapping$sector_names <- names(mapping)[-1][a]
这使得:

> mapping$sector
[1] "Blanks"                                 
[2] "Manufacturing"                          
[3] "Manufacturing"                          
[4] "Manufacturing"                          
[5] "Social, Finance, Analytics, Advertising"
[6] "Health"                                 
[7] "Social, Finance, Analytics, Advertising"
[8] "Manufacturing"                          
[9] "Automotive & Sports"     

您可以使用
dput()
共享数据吗?另外,请尝试以下操作:
sapply(1:nrow(dt)、函数(z)return(colnames(dt)[which(dt[z,]==1)])
其中
dt
是您的
数据。frame
还有另一种方法:因为只有一个值可以是1,所以可以使用
sapply(1:nrow(dt)、函数(z)return(colnames(dt)[[dt[z,--1]])
)。这不需要使用
哪个
等。您可以使用
dput()
来共享数据吗?另外,请尝试以下操作:
sapply(1:nrow(dt)、函数(z)return(colnames(dt)[which(dt[z,]==1)])
其中
dt
是您的
数据。frame
还有另一种方法:因为只有一个值可以是1,所以可以使用
sapply(1:nrow(dt)、函数(z)return(colnames(dt)[[dt[z,--1]])
)。这并不需要使用
,而
等。也许可以给他一个解释,来解决这个对你来说似乎微不足道的问题。而不是“这是解决方案”,同意。但是*他们:)第一个选择肯定是我用的。我还发现收集函数(来自tidyr)可以在这里帮助我…也许可以给他一个解释来解决这个,对你来说,似乎是一个琐碎的问题。而不是“这是解决方案”,同意。但是*他们:)第一个选择肯定是我用的。我还发现收集函数(来自tidyr)可以在这里帮助我。。。
> mapping$sector
[1] "Blanks"                                 
[2] "Manufacturing"                          
[3] "Manufacturing"                          
[4] "Manufacturing"                          
[5] "Social, Finance, Analytics, Advertising"
[6] "Health"                                 
[7] "Social, Finance, Analytics, Advertising"
[8] "Manufacturing"                          
[9] "Automotive & Sports"