我有一组具有相同列标题的数据帧,除了一些列名称大写,一些列小写.我想将所有列名称转换为小写,以便我可以创建一个大的数据帧.
我似乎无法colnames()在任何循环中工作或申请我写.附:
#create dfs
df1<-data.frame("A" = 1:10, "B" = 2:11)
df2<-data.frame("a" = 3:12, "b" = 4:13)
df3<-data.frame("a" = 5:14, "b" = 6:15)
#I have many more dfs in my actual data
#make list of dfs, define lowercasing function, apply across df list
dfs<-ls(pattern = "df")
lowercols<-function(df){colnames(get(df))<-tolower(colnames(get(df)))}
lapply(dfs, lowercols)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error in colnames(get(df)) <- tolower(colnames(get(df))) :
could not find function "get<-"
Run Code Online (Sandbox Code Playgroud)
如何将所有数据框更改为具有小写列名?
以下应该有效:
dfList <- lapply(lapply(dfs,get),function(x) {colnames(x) <- tolower(colnames(x));x})
Run Code Online (Sandbox Code Playgroud)
像这样的问题通常源于你没有将所有数据框放在单个数据结构中,然后被迫使用尴尬的东西,比如get.
这并不是说在我的代码,我使用lapply和get实际创建的数据帧的一个列表第一,然后改变其colnames.
您还应该知道您的lowercols功能非常类似于R.R函数通常不会以不返回任何内容的方式调用,但会产生副作用.如果你试图以这种方式编写函数(这是可能的),你可能会让你的生活变得困难并且有范围问题.请注意,在我的第二个lapply显式返回修改后的数据框.
| 归档时间: |
|
| 查看次数: |
10633 次 |
| 最近记录: |